diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index 2b2ca8cfba0..eecc8c24b0e 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -74,7 +74,6 @@ import android.provider.ContactsContract.Data; 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 final class Utils extends com.android.settingslib.Utils { } 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 bd35851feac..e3d732b4f83 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -200,6 +200,15 @@ public class WifiSettings extends RestrictedSettingsFragment // 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 @@ public class WifiSettings extends RestrictedSettingsFragment 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 @@ public class WifiSettings extends RestrictedSettingsFragment 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 class WifiSettings extends RestrictedSettingsFragment 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); } @@ -411,6 +428,19 @@ public class WifiSettings extends RestrictedSettingsFragment super.onStop(); } + @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; diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java index eaa380c55f1..93ab4063c48 100644 --- a/tests/robotests/src/com/android/settings/UtilsTest.java +++ b/tests/robotests/src/com/android/settings/UtilsTest.java @@ -16,18 +16,15 @@ import android.net.LinkProperties; import android.net.Network; import android.net.wifi.WifiManager; import android.os.Bundle; -import android.os.UserManager; import android.os.storage.DiskInfo; import android.os.storage.StorageManager; import android.os.storage.VolumeInfo; -import android.provider.Settings; import android.text.SpannableStringBuilder; import android.text.format.DateUtils; import android.text.style.TtsSpan; import com.android.settings.testutils.SettingsRobolectricTestRunner; -import com.android.settings.testutils.shadow.ShadowSecureSettings; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith;