Restrict WifiScanModeActivity when user restriction applies
Bug: 299633613 Change-Id: If8cfb7047c0131da451a7af0d2b5108080876b85
This commit is contained in:
@@ -39,26 +39,24 @@ import com.android.settings.Utils;
|
||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||
import com.android.settingslib.wifi.WifiPermissionChecker;
|
||||
|
||||
/**
|
||||
* This activity requests users permission to allow scanning even when Wi-Fi is turned off
|
||||
*/
|
||||
/** This activity requests users permission to allow scanning even when Wi-Fi is turned off */
|
||||
public class WifiScanModeActivity extends FragmentActivity {
|
||||
private static final String TAG = "WifiScanModeActivity";
|
||||
private DialogFragment mDialog;
|
||||
@VisibleForTesting
|
||||
String mApp;
|
||||
@VisibleForTesting
|
||||
WifiPermissionChecker mWifiPermissionChecker;
|
||||
@VisibleForTesting String mApp;
|
||||
@VisibleForTesting WifiPermissionChecker mWifiPermissionChecker;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
getWindow().addSystemFlags(
|
||||
WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
||||
getWindow()
|
||||
.addSystemFlags(
|
||||
WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
|
||||
Intent intent = getIntent();
|
||||
if (savedInstanceState == null) {
|
||||
if (intent != null && WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE
|
||||
.equals(intent.getAction())) {
|
||||
if (intent != null
|
||||
&& WifiManager.ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE.equals(
|
||||
intent.getAction())) {
|
||||
refreshAppLabel();
|
||||
} else {
|
||||
finish();
|
||||
@@ -92,6 +90,12 @@ public class WifiScanModeActivity extends FragmentActivity {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!isWifiScanModeConfigAllowed(getApplicationContext())) {
|
||||
Log.e(TAG, "This user is not allowed to configure Wi-Fi Scan Mode!");
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mDialog == null) {
|
||||
mDialog = AlertDialogFragment.newInstance(mApp);
|
||||
mDialog.show(getSupportFragmentManager(), "dialog");
|
||||
@@ -140,6 +144,7 @@ public class WifiScanModeActivity extends FragmentActivity {
|
||||
}
|
||||
|
||||
private final String mApp;
|
||||
|
||||
public AlertDialogFragment(String app) {
|
||||
super();
|
||||
mApp = app;
|
||||
@@ -158,25 +163,27 @@ public class WifiScanModeActivity extends FragmentActivity {
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
return new AlertDialog.Builder(getActivity())
|
||||
.setMessage(TextUtils.isEmpty(mApp) ?
|
||||
getString(R.string.wifi_scan_always_turn_on_message_unknown) :
|
||||
getString(R.string.wifi_scan_always_turnon_message, mApp))
|
||||
.setPositiveButton(R.string.wifi_scan_always_confirm_allow,
|
||||
.setMessage(
|
||||
TextUtils.isEmpty(mApp)
|
||||
? getString(R.string.wifi_scan_always_turn_on_message_unknown)
|
||||
: getString(R.string.wifi_scan_always_turnon_message, mApp))
|
||||
.setPositiveButton(
|
||||
R.string.wifi_scan_always_confirm_allow,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
((WifiScanModeActivity) getActivity()).doPositiveClick();
|
||||
}
|
||||
}
|
||||
)
|
||||
.setNegativeButton(R.string.wifi_scan_always_confirm_deny,
|
||||
})
|
||||
.setNegativeButton(
|
||||
R.string.wifi_scan_always_confirm_deny,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int whichButton) {
|
||||
((WifiScanModeActivity) getActivity()).doNegativeClick();
|
||||
}
|
||||
}
|
||||
)
|
||||
})
|
||||
.create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCancel(DialogInterface dialog) {
|
||||
((WifiScanModeActivity) getActivity()).doNegativeClick();
|
||||
@@ -184,9 +191,14 @@ public class WifiScanModeActivity extends FragmentActivity {
|
||||
}
|
||||
|
||||
private static boolean isGuestUser(Context context) {
|
||||
if (context == null) return false;
|
||||
final UserManager userManager = context.getSystemService(UserManager.class);
|
||||
if (userManager == null) return false;
|
||||
return userManager.isGuestUser();
|
||||
}
|
||||
|
||||
private static boolean isWifiScanModeConfigAllowed(Context context) {
|
||||
final UserManager userManager = context.getSystemService(UserManager.class);
|
||||
if (userManager == null) return true;
|
||||
return !userManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_LOCATION);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user