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: