mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-15 12:19:54 +01:00
Move requestEnableWiFi() into AbstractConditionManager
This commit is contained in:
@@ -1,21 +1,27 @@
|
|||||||
package org.briarproject.briar.android.hotspot;
|
package org.briarproject.briar.android.hotspot;
|
||||||
|
|
||||||
|
import android.content.ActivityNotFoundException;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
|
|
||||||
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.core.util.Consumer;
|
import androidx.core.util.Consumer;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
import static android.content.Context.WIFI_SERVICE;
|
import static android.content.Context.WIFI_SERVICE;
|
||||||
|
import static android.widget.Toast.LENGTH_LONG;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract base class for the ConditionManagers that ensure that the conditions
|
* Abstract base class for the ConditionManagers that ensure that the conditions
|
||||||
* to open a hotspot are fulfilled. There are different extensions of this for
|
* to open a hotspot are fulfilled. There are different extensions of this for
|
||||||
* API levels lower than 29 and 29+.
|
* API levels lower than 29, 29+ and 33+.
|
||||||
*/
|
*/
|
||||||
abstract class AbstractConditionManager {
|
abstract class AbstractConditionManager {
|
||||||
|
|
||||||
@@ -28,6 +34,7 @@ abstract class AbstractConditionManager {
|
|||||||
final Consumer<Boolean> permissionUpdateCallback;
|
final Consumer<Boolean> permissionUpdateCallback;
|
||||||
protected FragmentActivity ctx;
|
protected FragmentActivity ctx;
|
||||||
WifiManager wifiManager;
|
WifiManager wifiManager;
|
||||||
|
private ActivityResultLauncher<Intent> wifiRequest;
|
||||||
|
|
||||||
AbstractConditionManager(Consumer<Boolean> permissionUpdateCallback) {
|
AbstractConditionManager(Consumer<Boolean> permissionUpdateCallback) {
|
||||||
this.permissionUpdateCallback = permissionUpdateCallback;
|
this.permissionUpdateCallback = permissionUpdateCallback;
|
||||||
@@ -38,8 +45,12 @@ abstract class AbstractConditionManager {
|
|||||||
*/
|
*/
|
||||||
void init(FragmentActivity ctx) {
|
void init(FragmentActivity ctx) {
|
||||||
this.ctx = ctx;
|
this.ctx = ctx;
|
||||||
this.wifiManager = (WifiManager) ctx.getApplicationContext()
|
wifiManager = (WifiManager) ctx.getApplicationContext()
|
||||||
.getSystemService(WIFI_SERVICE);
|
.getSystemService(WIFI_SERVICE);
|
||||||
|
wifiRequest = ctx.registerForActivityResult(
|
||||||
|
new ActivityResultContracts.StartActivityForResult(),
|
||||||
|
result -> permissionUpdateCallback
|
||||||
|
.accept(wifiManager.isWifiEnabled()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,6 +68,8 @@ abstract class AbstractConditionManager {
|
|||||||
*/
|
*/
|
||||||
abstract boolean checkAndRequestConditions();
|
abstract boolean checkAndRequestConditions();
|
||||||
|
|
||||||
|
abstract String getWifiSettingsAction();
|
||||||
|
|
||||||
void showRationale(Context ctx, @StringRes int title,
|
void showRationale(Context ctx, @StringRes int title,
|
||||||
@StringRes int body, Runnable onContinueClicked,
|
@StringRes int body, Runnable onContinueClicked,
|
||||||
Runnable onDismiss) {
|
Runnable onDismiss) {
|
||||||
@@ -69,4 +82,13 @@ abstract class AbstractConditionManager {
|
|||||||
builder.show();
|
builder.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void requestEnableWiFi() {
|
||||||
|
try {
|
||||||
|
wifiRequest.launch(new Intent(getWifiSettingsAction()));
|
||||||
|
} catch (ActivityNotFoundException e) {
|
||||||
|
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG)
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,15 @@
|
|||||||
package org.briarproject.briar.android.hotspot;
|
package org.briarproject.briar.android.hotspot;
|
||||||
|
|
||||||
import android.content.ActivityNotFoundException;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
|
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
import androidx.activity.result.ActivityResultCaller;
|
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
|
||||||
import androidx.core.util.Consumer;
|
import androidx.core.util.Consumer;
|
||||||
|
|
||||||
import static android.widget.Toast.LENGTH_LONG;
|
|
||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ensures that the conditions to open a hotspot are fulfilled on
|
* This class ensures that the conditions to open a hotspot are fulfilled on
|
||||||
@@ -32,15 +23,8 @@ class ConditionManager extends AbstractConditionManager {
|
|||||||
private static final Logger LOG =
|
private static final Logger LOG =
|
||||||
getLogger(ConditionManager.class.getName());
|
getLogger(ConditionManager.class.getName());
|
||||||
|
|
||||||
private final ActivityResultLauncher<Intent> wifiRequest;
|
ConditionManager(Consumer<Boolean> permissionUpdateCallback) {
|
||||||
|
super( permissionUpdateCallback);
|
||||||
ConditionManager(ActivityResultCaller arc,
|
|
||||||
Consumer<Boolean> permissionUpdateCallback) {
|
|
||||||
super(permissionUpdateCallback);
|
|
||||||
wifiRequest = arc.registerForActivityResult(
|
|
||||||
new StartActivityForResult(),
|
|
||||||
result -> permissionUpdateCallback
|
|
||||||
.accept(wifiManager.isWifiEnabled()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -81,14 +65,9 @@ class ConditionManager extends AbstractConditionManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestEnableWiFi() {
|
@Override
|
||||||
try {
|
String getWifiSettingsAction() {
|
||||||
wifiRequest.launch(new Intent(Settings.ACTION_WIFI_SETTINGS));
|
return Settings.ACTION_WIFI_SETTINGS;
|
||||||
} catch (ActivityNotFoundException e) {
|
|
||||||
logException(LOG, WARNING, e);
|
|
||||||
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG)
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package org.briarproject.briar.android.hotspot;
|
package org.briarproject.briar.android.hotspot;
|
||||||
|
|
||||||
import android.content.ActivityNotFoundException;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
import org.briarproject.briar.android.util.Permission;
|
import org.briarproject.briar.android.util.Permission;
|
||||||
@@ -14,20 +11,16 @@ import java.util.logging.Logger;
|
|||||||
import androidx.activity.result.ActivityResultCaller;
|
import androidx.activity.result.ActivityResultCaller;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import androidx.core.util.Consumer;
|
import androidx.core.util.Consumer;
|
||||||
|
|
||||||
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
|
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
|
||||||
import static android.os.Build.VERSION.SDK_INT;
|
import static android.os.Build.VERSION.SDK_INT;
|
||||||
import static android.widget.Toast.LENGTH_LONG;
|
|
||||||
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
|
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
|
||||||
import static java.lang.Boolean.TRUE;
|
import static java.lang.Boolean.TRUE;
|
||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
|
||||||
import static org.briarproject.briar.android.util.PermissionUtils.isLocationEnabledForWiFi;
|
import static org.briarproject.briar.android.util.PermissionUtils.isLocationEnabledForWiFi;
|
||||||
import static org.briarproject.briar.android.util.PermissionUtils.showLocationDialog;
|
import static org.briarproject.briar.android.util.PermissionUtils.showLocationDialog;
|
||||||
|
|
||||||
@@ -47,7 +40,6 @@ class ConditionManager29 extends AbstractConditionManager {
|
|||||||
private Permission locationPermission = Permission.UNKNOWN;
|
private Permission locationPermission = Permission.UNKNOWN;
|
||||||
|
|
||||||
private final ActivityResultLauncher<String> locationRequest;
|
private final ActivityResultLauncher<String> locationRequest;
|
||||||
private final ActivityResultLauncher<Intent> wifiRequest;
|
|
||||||
|
|
||||||
ConditionManager29(ActivityResultCaller arc,
|
ConditionManager29(ActivityResultCaller arc,
|
||||||
Consumer<Boolean> permissionUpdateCallback) {
|
Consumer<Boolean> permissionUpdateCallback) {
|
||||||
@@ -58,11 +50,6 @@ class ConditionManager29 extends AbstractConditionManager {
|
|||||||
onRequestPermissionResult(granted);
|
onRequestPermissionResult(granted);
|
||||||
permissionUpdateCallback.accept(TRUE.equals(granted));
|
permissionUpdateCallback.accept(TRUE.equals(granted));
|
||||||
});
|
});
|
||||||
wifiRequest = arc.registerForActivityResult(
|
|
||||||
new StartActivityForResult(),
|
|
||||||
result -> permissionUpdateCallback
|
|
||||||
.accept(wifiManager.isWifiEnabled())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -136,6 +123,11 @@ class ConditionManager29 extends AbstractConditionManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getWifiSettingsAction() {
|
||||||
|
return Settings.Panel.ACTION_WIFI;
|
||||||
|
}
|
||||||
|
|
||||||
private void onRequestPermissionResult(@Nullable Boolean granted) {
|
private void onRequestPermissionResult(@Nullable Boolean granted) {
|
||||||
if (granted != null && granted) {
|
if (granted != null && granted) {
|
||||||
locationPermission = Permission.GRANTED;
|
locationPermission = Permission.GRANTED;
|
||||||
@@ -151,14 +143,4 @@ class ConditionManager29 extends AbstractConditionManager {
|
|||||||
locationRequest.launch(ACCESS_FINE_LOCATION);
|
locationRequest.launch(ACCESS_FINE_LOCATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestEnableWiFi() {
|
|
||||||
try {
|
|
||||||
wifiRequest.launch(new Intent(Settings.Panel.ACTION_WIFI));
|
|
||||||
} catch (ActivityNotFoundException e) {
|
|
||||||
logException(LOG, WARNING, e);
|
|
||||||
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG)
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
package org.briarproject.briar.android.hotspot;
|
package org.briarproject.briar.android.hotspot;
|
||||||
|
|
||||||
import android.content.ActivityNotFoundException;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.widget.Toast;
|
|
||||||
|
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
import org.briarproject.briar.android.util.Permission;
|
import org.briarproject.briar.android.util.Permission;
|
||||||
@@ -14,19 +11,15 @@ import java.util.logging.Logger;
|
|||||||
import androidx.activity.result.ActivityResultCaller;
|
import androidx.activity.result.ActivityResultCaller;
|
||||||
import androidx.activity.result.ActivityResultLauncher;
|
import androidx.activity.result.ActivityResultLauncher;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
import androidx.activity.result.contract.ActivityResultContracts.RequestPermission;
|
||||||
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import androidx.core.util.Consumer;
|
import androidx.core.util.Consumer;
|
||||||
|
|
||||||
import static android.Manifest.permission.NEARBY_WIFI_DEVICES;
|
import static android.Manifest.permission.NEARBY_WIFI_DEVICES;
|
||||||
import static android.widget.Toast.LENGTH_LONG;
|
|
||||||
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
|
import static androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale;
|
||||||
import static java.lang.Boolean.TRUE;
|
import static java.lang.Boolean.TRUE;
|
||||||
import static java.util.logging.Level.INFO;
|
import static java.util.logging.Level.INFO;
|
||||||
import static java.util.logging.Level.WARNING;
|
|
||||||
import static java.util.logging.Logger.getLogger;
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.LogUtils.logException;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class ensures that the conditions to open a hotspot are fulfilled on
|
* This class ensures that the conditions to open a hotspot are fulfilled on
|
||||||
@@ -44,7 +37,6 @@ class ConditionManager33 extends AbstractConditionManager {
|
|||||||
private Permission nearbyWifiPermission = Permission.UNKNOWN;
|
private Permission nearbyWifiPermission = Permission.UNKNOWN;
|
||||||
|
|
||||||
private final ActivityResultLauncher<String> nearbyWifiRequest;
|
private final ActivityResultLauncher<String> nearbyWifiRequest;
|
||||||
private final ActivityResultLauncher<Intent> wifiRequest;
|
|
||||||
|
|
||||||
ConditionManager33(ActivityResultCaller arc,
|
ConditionManager33(ActivityResultCaller arc,
|
||||||
Consumer<Boolean> permissionUpdateCallback) {
|
Consumer<Boolean> permissionUpdateCallback) {
|
||||||
@@ -55,11 +47,6 @@ class ConditionManager33 extends AbstractConditionManager {
|
|||||||
onRequestPermissionResult(granted);
|
onRequestPermissionResult(granted);
|
||||||
permissionUpdateCallback.accept(TRUE.equals(granted));
|
permissionUpdateCallback.accept(TRUE.equals(granted));
|
||||||
});
|
});
|
||||||
wifiRequest = arc.registerForActivityResult(
|
|
||||||
new StartActivityForResult(),
|
|
||||||
result -> permissionUpdateCallback
|
|
||||||
.accept(wifiManager.isWifiEnabled())
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -122,6 +109,11 @@ class ConditionManager33 extends AbstractConditionManager {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
String getWifiSettingsAction() {
|
||||||
|
return Settings.Panel.ACTION_WIFI;
|
||||||
|
}
|
||||||
|
|
||||||
private void onRequestPermissionResult(@Nullable Boolean granted) {
|
private void onRequestPermissionResult(@Nullable Boolean granted) {
|
||||||
if (granted != null && granted) {
|
if (granted != null && granted) {
|
||||||
nearbyWifiPermission = Permission.GRANTED;
|
nearbyWifiPermission = Permission.GRANTED;
|
||||||
@@ -137,14 +129,4 @@ class ConditionManager33 extends AbstractConditionManager {
|
|||||||
nearbyWifiRequest.launch(NEARBY_WIFI_DEVICES);
|
nearbyWifiRequest.launch(NEARBY_WIFI_DEVICES);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void requestEnableWiFi() {
|
|
||||||
try {
|
|
||||||
wifiRequest.launch(new Intent(Settings.Panel.ACTION_WIFI));
|
|
||||||
} catch (ActivityNotFoundException e) {
|
|
||||||
logException(LOG, WARNING, e);
|
|
||||||
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_LONG)
|
|
||||||
.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class HotspotIntroFragment extends Fragment {
|
|||||||
private TextView progressTextView;
|
private TextView progressTextView;
|
||||||
|
|
||||||
private final AbstractConditionManager conditionManager = SDK_INT < 29 ?
|
private final AbstractConditionManager conditionManager = SDK_INT < 29 ?
|
||||||
new ConditionManager(this, this::onPermissionUpdate) :
|
new ConditionManager(this::onPermissionUpdate) :
|
||||||
SDK_INT >= 33 ?
|
SDK_INT >= 33 ?
|
||||||
new ConditionManager33(this, this::onPermissionUpdate) :
|
new ConditionManager33(this, this::onPermissionUpdate) :
|
||||||
new ConditionManager29(this, this::onPermissionUpdate);
|
new ConditionManager29(this, this::onPermissionUpdate);
|
||||||
|
|||||||
Reference in New Issue
Block a user