diff --git a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
index 3b8807f0d..201e313ec 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/fragment/ErrorFragment.java
@@ -17,7 +17,7 @@ import androidx.annotation.Nullable;
@ParametersNotNullByDefault
public class ErrorFragment extends BaseFragment {
- private static final String TAG = ErrorFragment.class.getName();
+ public static final String TAG = ErrorFragment.class.getName();
private static final String ERROR_MSG = "errorMessage";
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 32a8e79ee..03b41379b 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
@@ -3,13 +3,13 @@ package org.briarproject.briar.android.hotspot;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
-import android.widget.Toast;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
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.ErrorFragment;
import org.briarproject.briar.android.hotspot.HotspotState.HotspotError;
import org.briarproject.briar.android.hotspot.HotspotState.HotspotStarted;
@@ -17,10 +17,10 @@ import javax.annotation.Nullable;
import javax.inject.Inject;
import androidx.appcompat.app.ActionBar;
+import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.ViewModelProvider;
-import static android.widget.Toast.LENGTH_LONG;
import static org.briarproject.briar.android.util.UiUtils.showFragment;
import static org.briarproject.briar.api.android.AndroidNotificationManager.ACTION_STOP_HOTSPOT;
@@ -60,9 +60,9 @@ public class HotspotActivity extends BriarActivity {
showFragment(fm, new HotspotFragment(), tag);
}
} else if (hotspotState instanceof HotspotError) {
- // TODO ErrorFragment
String error = ((HotspotError) hotspotState).getError();
- Toast.makeText(this, error, LENGTH_LONG).show();
+ Fragment f = ErrorFragment.newInstance(error);
+ showFragment(getSupportFragmentManager(), f, ErrorFragment.TAG);
}
});
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
index e4b13a598..f20140978 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotViewModel.java
@@ -72,8 +72,15 @@ class HotspotViewModel extends DbViewModel
@UiThread
void startHotspot() {
- hotspotManager.startWifiP2pHotspot();
- notificationManager.showHotspotNotification();
+ HotspotState s = state.getValue();
+ if (s instanceof HotspotStarted) {
+ // Don't try to start again, if already started, just re-set value.
+ // This can happen if the user navigates back to intro fragment.
+ state.setValue(s);
+ } else {
+ hotspotManager.startWifiP2pHotspot();
+ notificationManager.showHotspotNotification();
+ }
}
@UiThread
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
index 14dfba349..1883ca721 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/WebServer.java
@@ -65,7 +65,7 @@ public class WebServer extends NanoHTTPD {
} catch (Exception e) {
logException(LOG, WARNING, e);
res = newFixedLengthResponse(INTERNAL_ERROR, MIME_PLAINTEXT,
- INTERNAL_ERROR.getDescription());
+ ctx.getString(R.string.hotspot_error_web_server_serve));
}
return res;
}
@@ -123,7 +123,7 @@ public class WebServer extends NanoHTTPD {
} catch (FileNotFoundException e) {
logException(LOG, WARNING, e);
res = newFixedLengthResponse(NOT_FOUND, MIME_PLAINTEXT,
- "Error 404, file not found.");
+ ctx.getString(R.string.hotspot_error_web_server_serve));
}
return res;
}
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 24b99bfd5..ea9b6517c 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -713,7 +713,8 @@
Hotspot failed to start with an unknown error, reason %d
Hotspot failed to start: no group info
Error starting web server!
- Warning: This is a debug app that can NOT be installed on another device
+ Error presenting website.\n\nPlease send feedback (with anonymous data) via the Briar app if the issue persists.
+ Warning: This app was installed with Android Studio and can NOT be installed on another device.
Manual
To download the app on another phone, please connect to this Wi-Fi network: