diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
index f78b029b6..78d10ef14 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotActivity.java
@@ -10,7 +10,6 @@ import org.briarproject.briar.R;
import org.briarproject.briar.android.activity.ActivityComponent;
import org.briarproject.briar.android.activity.BriarActivity;
import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
-import org.briarproject.briar.android.fragment.ErrorFragment;
import org.briarproject.briar.android.hotspot.HotspotState.HotspotError;
import org.briarproject.briar.android.hotspot.HotspotState.HotspotStarted;
@@ -62,9 +61,14 @@ public class HotspotActivity extends BriarActivity
showFragment(fm, new HotspotFragment(), tag);
}
} else if (hotspotState instanceof HotspotError) {
+ // TODO: handle rotation gracefully. If we just use
+ // fm.findFragmentByTag(HotspotErrorFragment.TAG) == null)
+ // we might hide multiple errors. Maybe we could update the
+ // error message of the existing fragment in that case
String error = ((HotspotError) hotspotState).getError();
- Fragment f = ErrorFragment.newInstance(error);
- showFragment(getSupportFragmentManager(), f, ErrorFragment.TAG);
+ Fragment f = HotspotErrorFragment.newInstance(error);
+ showFragment(getSupportFragmentManager(), f,
+ HotspotErrorFragment.TAG);
}
});
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java
new file mode 100644
index 000000000..a2ff36f58
--- /dev/null
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotErrorFragment.java
@@ -0,0 +1,61 @@
+package org.briarproject.briar.android.hotspot;
+
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
+import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
+import org.briarproject.briar.R;
+import org.briarproject.briar.android.fragment.BaseFragment;
+
+import androidx.annotation.Nullable;
+
+
+@MethodsNotNullByDefault
+@ParametersNotNullByDefault
+public class HotspotErrorFragment extends BaseFragment {
+
+ public static final String TAG = HotspotErrorFragment.class.getName();
+
+ private static final String ERROR_MSG = "errorMessage";
+
+ public static HotspotErrorFragment newInstance(String message) {
+ HotspotErrorFragment f = new HotspotErrorFragment();
+ Bundle args = new Bundle();
+ args.putString(ERROR_MSG, message);
+ f.setArguments(args);
+ return f;
+ }
+
+ private String errorMessage;
+
+ @Override
+ public String getUniqueTag() {
+ return TAG;
+ }
+
+ @Override
+ public void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Bundle args = getArguments();
+ if (args == null) throw new AssertionError();
+ errorMessage = args.getString(ERROR_MSG);
+ }
+
+ @Nullable
+ @Override
+ public View onCreateView(LayoutInflater inflater,
+ @Nullable ViewGroup container,
+ @Nullable Bundle savedInstanceState) {
+ View v = inflater
+ .inflate(R.layout.fragment_hotspot_error, container, false);
+ TextView msg = v.findViewById(R.id.errorMessageDetail);
+ msg.setText(errorMessage);
+ return v;
+ }
+
+}
diff --git a/briar-android/src/main/res/layout/fragment_hotspot_error.xml b/briar-android/src/main/res/layout/fragment_hotspot_error.xml
new file mode 100644
index 000000000..d47d74c48
--- /dev/null
+++ b/briar-android/src/main/res/layout/fragment_hotspot_error.xml
@@ -0,0 +1,113 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 3e2a5e0ad..af9c4bb25 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -708,6 +708,7 @@
To create a Wi-Fi hotspot, Briar needs to use Wi-Fi. Please enable it.
You have denied to enable Wi-Fi, but Briar needs to use Wi-Fi.\n\nPlease consider enabling it.
+ Something went wrong while trying to share the app via Wi-Fi:
Device does not support Wi-Fi Direct
Hotspot failed to start: error %s
Hotspot failed to start with an unknown error, reason %d