diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager.java
index 746bc8a21..050bb8a01 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager.java
@@ -1,7 +1,13 @@
package org.briarproject.briar.android.hotspot;
+import android.content.Context;
+import android.content.DialogInterface;
import android.net.wifi.WifiManager;
+import org.briarproject.briar.R;
+
+import androidx.annotation.StringRes;
+import androidx.appcompat.app.AlertDialog;
import androidx.core.util.Consumer;
import androidx.fragment.app.FragmentActivity;
@@ -50,4 +56,29 @@ abstract class ConditionManager {
*/
abstract boolean checkAndRequestConditions();
+ void showDenialDialog(FragmentActivity ctx,
+ @StringRes int title, @StringRes int body,
+ DialogInterface.OnClickListener onOkClicked, Runnable onDismiss) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
+ builder.setTitle(title);
+ builder.setMessage(body);
+ builder.setPositiveButton(R.string.ok, onOkClicked);
+ builder.setNegativeButton(R.string.cancel,
+ (dialog, which) -> ctx.supportFinishAfterTransition());
+ builder.setOnDismissListener(dialog -> onDismiss.run());
+ builder.show();
+ }
+
+ void showRationale(Context ctx, @StringRes int title,
+ @StringRes int body, Runnable onContinueClicked,
+ Runnable onDismiss) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
+ builder.setTitle(title);
+ builder.setMessage(body);
+ builder.setNeutralButton(R.string.continue_button,
+ (dialog, which) -> onContinueClicked.run());
+ builder.setOnDismissListener(dialog -> onDismiss.run());
+ builder.show();
+ }
+
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager29Impl.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager29Impl.java
index 94d79f382..464fa4c77 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager29Impl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManager29Impl.java
@@ -17,11 +17,10 @@ import androidx.core.util.Consumer;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
+import static java.lang.Boolean.TRUE;
import static java.util.logging.Level.INFO;
import static java.util.logging.Logger.getLogger;
import static org.briarproject.briar.android.util.UiUtils.getGoToSettingsListener;
-import static org.briarproject.briar.android.util.UiUtils.showDenialDialog;
-import static org.briarproject.briar.android.util.UiUtils.showRationale;
/**
* This class ensures that the conditions to open a hotspot are fulfilled on
@@ -47,11 +46,13 @@ class ConditionManager29Impl extends ConditionManager {
locationRequest = arc.registerForActivityResult(
new RequestPermission(), granted -> {
onRequestPermissionResult(granted);
- permissionUpdateCallback.accept(true);
+ permissionUpdateCallback.accept(TRUE.equals(granted));
});
wifiRequest = arc.registerForActivityResult(
new StartActivityForResult(),
- result -> permissionUpdateCallback.accept(true));
+ result -> permissionUpdateCallback
+ .accept(wifiManager.isWifiEnabled())
+ );
}
@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManagerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManagerImpl.java
index 456f89ae3..5d7ff1079 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManagerImpl.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/ConditionManagerImpl.java
@@ -14,7 +14,6 @@ import androidx.core.util.Consumer;
import static java.util.logging.Level.INFO;
import static java.util.logging.Logger.getLogger;
-import static org.briarproject.briar.android.util.UiUtils.showRationale;
/**
* This class ensures that the conditions to open a hotspot are fulfilled on
@@ -35,7 +34,8 @@ class ConditionManagerImpl extends ConditionManager {
super(permissionUpdateCallback);
wifiRequest = arc.registerForActivityResult(
new StartActivityForResult(),
- result -> permissionUpdateCallback.accept(true));
+ result -> permissionUpdateCallback
+ .accept(wifiManager.isWifiEnabled()));
}
@Override
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
index e5f9e6b50..716ea4f97 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/hotspot/HotspotIntroFragment.java
@@ -86,10 +86,10 @@ public class HotspotIntroFragment extends Fragment {
private void onButtonClick(View view) {
startButton.setEnabled(false);
- startHotspot();
+ startHotspotIfConditionsFulfilled();
}
- private void startHotspot() {
+ private void startHotspotIfConditionsFulfilled() {
if (conditionManager.checkAndRequestConditions()) {
showInstallWarningIfNeeded();
beginDelayedTransition((ViewGroup) requireView());
@@ -103,7 +103,7 @@ public class HotspotIntroFragment extends Fragment {
private void onPermissionUpdate(boolean recheckPermissions) {
startButton.setEnabled(true);
if (recheckPermissions) {
- startHotspot();
+ startHotspotIfConditionsFulfilled();
}
}
diff --git a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
index 22486c4fe..ae1e43131 100644
--- a/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
+++ b/briar-android/src/main/java/org/briarproject/briar/android/util/UiUtils.java
@@ -6,7 +6,6 @@ import android.app.Activity;
import android.app.KeyguardManager;
import android.content.ActivityNotFoundException;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.content.res.Resources;
@@ -53,7 +52,6 @@ import androidx.annotation.ColorRes;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
-import androidx.annotation.StringRes;
import androidx.annotation.UiThread;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
@@ -564,30 +562,4 @@ public class UiUtils {
SOFT_INPUT_STATE_HIDDEN);
}
- public static void showDenialDialog(FragmentActivity ctx,
- @StringRes int title,
- @StringRes int body, DialogInterface.OnClickListener onOkClicked,
- Runnable onDismiss) {
- AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setTitle(title);
- builder.setMessage(body);
- builder.setPositiveButton(R.string.ok, onOkClicked);
- builder.setNegativeButton(R.string.cancel,
- (dialog, which) -> ctx.supportFinishAfterTransition());
- builder.setOnDismissListener(dialog -> onDismiss.run());
- builder.show();
- }
-
- public static void showRationale(Context ctx, @StringRes int title,
- @StringRes int body,
- Runnable onContinueClicked, Runnable onDismiss) {
- AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
- builder.setTitle(title);
- builder.setMessage(body);
- builder.setNeutralButton(R.string.continue_button,
- (dialog, which) -> onContinueClicked.run());
- builder.setOnDismissListener(dialog -> onDismiss.run());
- builder.show();
- }
-
}
diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml
index 4fbebca60..421780a9e 100644
--- a/briar-android/src/main/res/values/strings.xml
+++ b/briar-android/src/main/res/values/strings.xml
@@ -757,7 +757,7 @@
Error starting web server!
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.
- Unable to start the hotspot. If you have another hotspot running or are sharing your internet connection via Wifi, try stopping that and try again afterwards.
+ Unable to start the hotspot.\n\nIf you have another hotspot running or are sharing your internet connection via Wi-Fi, try stopping that and try again afterwards.