Restrict changing wi-fi networks
Bug: 31852835
Test: manual - verify unrestricted as regular user, but that a password
is required in demo mode.
Change-Id: I60f95ccbb10ba728b384b9c8c2ae723934fb2928
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 2b2ca8c..eecc8c2 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -74,7 +74,6 @@
import android.provider.ContactsContract.Profile;
import android.provider.ContactsContract.RawContacts;
import android.provider.Settings;
-import android.provider.Settings.Secure;
import android.support.annotation.StringRes;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceGroup;
@@ -1282,13 +1281,12 @@
}
public static String getDemoModePackageName(Context context) {
- return context.getResources().getString(
- com.android.internal.R.string.config_demoModePackage);
+ return context.getString(com.android.internal.R.string.config_demoModePackage);
}
/**
* Returns if a given user is a profile of another user.
- * @param user The user whose profiles will be checked.
+ * @param user The user whose profiles wibe checked.
* @param profile The (potential) profile.
* @return if the profile is actually a profile
*/
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index bd35851..e3d732b 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -200,6 +200,15 @@
// loaded (ODR).
setAnimationAllowed(false);
+ addPreferences();
+
+ mIsRestricted = isUiRestricted();
+
+ mBgThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
+ mBgThread.start();
+ }
+
+ private void addPreferences() {
addPreferencesFromResource(R.xml.wifi_settings);
mConnectedAccessPointPreferenceCategory =
@@ -218,11 +227,6 @@
mStatusMessagePreference = new LinkablePreference(prefContext);
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
-
- mIsRestricted = isUiRestricted();
-
- mBgThread = new HandlerThread(TAG, Process.THREAD_PRIORITY_BACKGROUND);
- mBgThread.start();
}
@Override
@@ -341,16 +345,20 @@
mWifiTracker.startTracking();
if (mIsRestricted) {
- if (!isUiRestrictedByOnlyAdmin()) {
- getEmptyTextView().setText(R.string.wifi_empty_list_user_restricted);
- }
- getPreferenceScreen().removeAll();
+ restrictUi();
return;
}
onWifiStateChanged(mWifiManager.getWifiState());
}
+ private void restrictUi() {
+ if (!isUiRestrictedByOnlyAdmin()) {
+ getEmptyTextView().setText(R.string.wifi_empty_list_user_restricted);
+ }
+ getPreferenceScreen().removeAll();
+ }
+
/**
* Only update the AP list if there are not any APs currently shown.
*
@@ -390,6 +398,15 @@
public void onResume() {
final Activity activity = getActivity();
super.onResume();
+
+ // Because RestrictedSettingsFragment's onResume potentially requests authorization,
+ // which changes the restriction state, recalculate it.
+ final boolean alreadyImmutablyRestricted = mIsRestricted;
+ mIsRestricted = isUiRestricted();
+ if (!alreadyImmutablyRestricted && mIsRestricted) {
+ restrictUi();
+ }
+
if (mWifiEnabler != null) {
mWifiEnabler.resume(activity);
}
@@ -412,6 +429,19 @@
}
@Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ super.onActivityResult(requestCode, resultCode, data);
+
+ final boolean formerlyRestricted = mIsRestricted;
+ mIsRestricted = isUiRestricted();
+ if (formerlyRestricted && !mIsRestricted
+ && getPreferenceScreen().getPreferenceCount() == 0) {
+ // De-restrict the ui
+ addPreferences();
+ }
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.WIFI;
}