diff --git a/src/com/android/settings/wifi/WifiScanModeActivity.java b/src/com/android/settings/wifi/WifiScanModeActivity.java index c10ee27fddb..446891a3c15 100644 --- a/src/com/android/settings/wifi/WifiScanModeActivity.java +++ b/src/com/android/settings/wifi/WifiScanModeActivity.java @@ -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); + } }