From f1e78d35dc481aa18990b2a0fb1aaf3889836273 Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Mon, 14 Mar 2016 12:03:40 -0700 Subject: [PATCH] Add disabled by policy empty views to more screens. Bug: 27588316 Bug: 27588671 Bug: 27588740 Change-Id: Id614067d76e936e9c3c585fdaed304bfbc88dc74 --- res/values/strings.xml | 2 ++ src/com/android/settings/ApnSettings.java | 28 ++++++--------- src/com/android/settings/nfc/AndroidBeam.java | 35 ++++++++++++++----- .../settings/wifi/AdvancedWifiSettings.java | 34 +++++++++++++++--- 4 files changed, 70 insertions(+), 29 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 4992d6b316d..ca7161eaca9 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1801,6 +1801,8 @@ Saved networks IP settings + + Wi\u2011Fi advanced settings are not available for this user Save diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index 1b4dc1abf43..439a7d9be0b 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -60,7 +60,7 @@ import com.android.internal.telephony.uicc.UiccController; import java.util.ArrayList; -public class ApnSettings extends SettingsPreferenceFragment implements +public class ApnSettings extends RestrictedSettingsFragment implements Preference.OnPreferenceChangeListener { static final String TAG = "ApnSettings"; @@ -103,8 +103,6 @@ public class ApnSettings extends SettingsPreferenceFragment implements private String mMvnoType; private String mMvnoMatchData; - private UserManager mUm; - private String mSelectedKey; private IntentFilter mMobileStateFilter; @@ -114,6 +112,10 @@ public class ApnSettings extends SettingsPreferenceFragment implements private boolean mHideImsApn; private boolean mAllowAddingApns; + public ApnSettings() { + super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); + } + private final BroadcastReceiver mMobileStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -154,14 +156,10 @@ public class ApnSettings extends SettingsPreferenceFragment implements final int subId = activity.getIntent().getIntExtra(SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); - mUm = (UserManager) getSystemService(Context.USER_SERVICE); - mMobileStateFilter = new IntentFilter( TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED); - if (!mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) { - setHasOptionsMenu(true); - } + setIfOnlyAvailableForAdmins(true); mSubscriptionInfo = SubscriptionManager.from(activity).getActiveSubscriptionInfo(subId); mUiccController = UiccController.getInstance(); @@ -177,16 +175,12 @@ public class ApnSettings extends SettingsPreferenceFragment implements public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - TextView empty = (TextView) getView().findViewById(android.R.id.empty); - if (empty != null) { - empty.setText(R.string.apn_settings_not_available); - setEmptyView(empty); - } - - if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS) - || !mUm.isAdminUser()) { - mUnavailable = true; + getEmptyTextView().setText(R.string.apn_settings_not_available); + mUnavailable = isUiRestricted(); + setHasOptionsMenu(!mUnavailable); + if (mUnavailable) { setPreferenceScreen(new PreferenceScreen(getPrefContext(), null)); + getPreferenceScreen().removeAll(); return; } diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java index ef874f5590c..a1be5535195 100644 --- a/src/com/android/settings/nfc/AndroidBeam.java +++ b/src/com/android/settings/nfc/AndroidBeam.java @@ -20,6 +20,7 @@ import android.app.ActionBar; import android.content.Context; import android.nfc.NfcAdapter; import android.os.Bundle; +import android.os.UserHandle; import android.os.UserManager; import android.view.LayoutInflater; import android.view.Menu; @@ -33,7 +34,11 @@ import com.android.settings.HelpUtils; import com.android.settings.InstrumentedFragment; import com.android.settings.R; import com.android.settings.SettingsActivity; +import com.android.settings.ShowAdminSupportDetailsDialog; import com.android.settings.widget.SwitchBar; +import com.android.settingslib.RestrictedLockUtils; + +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; public class AndroidBeam extends InstrumentedFragment implements SwitchBar.OnSwitchChangeListener { @@ -41,7 +46,8 @@ public class AndroidBeam extends InstrumentedFragment private NfcAdapter mNfcAdapter; private SwitchBar mSwitchBar; private CharSequence mOldActivityTitle; - private boolean mBeamDisallowed; + private boolean mBeamDisallowedByBase; + private boolean mBeamDisallowedByAdmin; @Override public void onCreate(Bundle savedInstanceState) { @@ -53,8 +59,6 @@ public class AndroidBeam extends InstrumentedFragment actionBar.setTitle(R.string.android_beam_settings_title); mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity()); - mBeamDisallowed = ((UserManager) getActivity().getSystemService(Context.USER_SERVICE)) - .hasUserRestriction(UserManager.DISALLOW_OUTGOING_BEAM); setHasOptionsMenu(true); } @@ -68,8 +72,19 @@ public class AndroidBeam extends InstrumentedFragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced( + getActivity(), UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId()); + final UserManager um = UserManager.get(getActivity()); + mBeamDisallowedByBase = RestrictedLockUtils.hasBaseUserRestriction(getActivity(), + UserManager.DISALLOW_OUTGOING_BEAM, UserHandle.myUserId()); + if (!mBeamDisallowedByBase && admin != null) { + View view = inflater.inflate(R.layout.admin_support_details_empty_view, null); + ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(), view, admin, false); + view.setVisibility(View.VISIBLE); + mBeamDisallowedByAdmin = true; + return view; + } mView = inflater.inflate(R.layout.android_beam, container, false); - return mView; } @@ -80,10 +95,14 @@ public class AndroidBeam extends InstrumentedFragment SettingsActivity activity = (SettingsActivity) getActivity(); mSwitchBar = activity.getSwitchBar(); - mSwitchBar.setChecked(!mBeamDisallowed && mNfcAdapter.isNdefPushEnabled()); - mSwitchBar.addOnSwitchChangeListener(this); - mSwitchBar.setEnabled(!mBeamDisallowed); - mSwitchBar.show(); + if (!mBeamDisallowedByBase && mBeamDisallowedByAdmin) { + mSwitchBar.hide(); + } else { + mSwitchBar.setChecked(!mBeamDisallowedByBase && mNfcAdapter.isNdefPushEnabled()); + mSwitchBar.addOnSwitchChangeListener(this); + mSwitchBar.setEnabled(!mBeamDisallowedByBase); + mSwitchBar.show(); + } } @Override diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java index fd81fef0fe7..6f23b4fa7c0 100644 --- a/src/com/android/settings/wifi/AdvancedWifiSettings.java +++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java @@ -22,14 +22,18 @@ import android.content.Context; import android.content.Intent; import android.net.wifi.WpsInfo; import android.os.Bundle; +import android.os.UserManager; import android.security.Credentials; import android.support.v7.preference.Preference; import android.support.v7.preference.Preference.OnPreferenceClickListener; +import android.support.v7.preference.PreferenceScreen; + import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.RestrictedSettingsFragment; +import com.android.settingslib.RestrictedLockUtils; -public class AdvancedWifiSettings extends SettingsPreferenceFragment { +public class AdvancedWifiSettings extends RestrictedSettingsFragment { private static final String TAG = "AdvancedWifiSettings"; private static final String KEY_INSTALL_CREDENTIALS = "install_credentials"; @@ -37,6 +41,12 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment { private static final String KEY_WPS_PUSH = "wps_push_button"; private static final String KEY_WPS_PIN = "wps_pin_entry"; + private boolean mUnavailable; + + public AdvancedWifiSettings() { + super(UserManager.DISALLOW_CONFIG_WIFI); + } + @Override protected int getMetricsCategory() { return MetricsEvent.WIFI_ADVANCED; @@ -45,13 +55,29 @@ public class AdvancedWifiSettings extends SettingsPreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - addPreferencesFromResource(R.xml.wifi_advanced_settings); + if (isUiRestricted()) { + mUnavailable = true; + setPreferenceScreen(new PreferenceScreen(getPrefContext(), null)); + } else { + addPreferencesFromResource(R.xml.wifi_advanced_settings); + } + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + getEmptyTextView().setText(R.string.wifi_advanced_not_available); + if (mUnavailable) { + getPreferenceScreen().removeAll(); + } } @Override public void onResume() { super.onResume(); - initPreferences(); + if (!mUnavailable) { + initPreferences(); + } } private void initPreferences() {