Add disabled by policy empty views to more screens.
Bug: 27214401
Change-Id: I6cd4292a63610671070bf2134105e9e348c3ab32
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index 084f25a..8ae5888 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -76,7 +76,6 @@
import android.webkit.IWebViewUpdateService;
import android.webkit.WebViewProviderInfo;
import android.widget.Switch;
-import android.widget.TextView;
import android.widget.Toast;
import com.android.internal.app.LocalePicker;
@@ -95,7 +94,7 @@
/*
* Displays preferences for application developers.
*/
-public class DevelopmentSettings extends SettingsPreferenceFragment
+public class DevelopmentSettings extends RestrictedSettingsFragment
implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
OnPreferenceChangeListener, SwitchBar.OnSwitchChangeListener, Indexable {
private static final String TAG = "DevelopmentSettings";
@@ -317,6 +316,10 @@
private Dialog mAdbKeysDialog;
private boolean mUnavailable;
+ public DevelopmentSettings() {
+ super(UserManager.DISALLOW_DEBUGGING_FEATURES);
+ }
+
@Override
protected int getMetricsCategory() {
return MetricsEvent.DEVELOPMENT;
@@ -337,8 +340,8 @@
mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
- if (!mUm.isAdminUser()
- || mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)
+ setIfOnlyAvailableForAdmins(true);
+ if (isUiRestricted()
|| Settings.Global.getInt(getActivity().getContentResolver(),
Settings.Global.DEVICE_PROVISIONED, 0) == 0) {
// Block access to developer options if the user is not the owner, if user policy
@@ -582,11 +585,10 @@
if (mUnavailable) {
// Show error message
- TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
- setEmptyView(emptyView);
- if (emptyView != null) {
- emptyView.setText(R.string.development_settings_not_available);
+ if (!isUiRestrictedByOnlyAdmin()) {
+ getEmptyTextView().setText(R.string.development_settings_not_available);
}
+ getPreferenceScreen().removeAll();
return;
}
diff --git a/src/com/android/settings/MasterClear.java b/src/com/android/settings/MasterClear.java
index 5e8baac..75a4d67 100644
--- a/src/com/android/settings/MasterClear.java
+++ b/src/com/android/settings/MasterClear.java
@@ -41,9 +41,12 @@
import android.widget.TextView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settingslib.RestrictedLockUtils;
import java.util.List;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
/**
* Confirm and execute a reset of the device to a clean "just out of the box"
* state. Multiple confirmations are required: first, a general "are you sure
@@ -280,10 +283,17 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
+ final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
+ getActivity(), UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId());
final UserManager um = UserManager.get(getActivity());
- if (!um.isAdminUser()
- || um.hasUserRestriction(UserManager.DISALLOW_FACTORY_RESET)) {
+ if (!um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
+ UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) {
return inflater.inflate(R.layout.master_clear_disallowed_screen, null);
+ } else if (admin != null) {
+ View view = inflater.inflate(R.layout.admin_support_details_empty_view, null);
+ ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(), view, admin, false);
+ view.setVisibility(View.VISIBLE);
+ return view;
}
mContentView = inflater.inflate(R.layout.master_clear, null);
diff --git a/src/com/android/settings/MasterClearConfirm.java b/src/com/android/settings/MasterClearConfirm.java
index 697c5c9..7c14bad 100644
--- a/src/com/android/settings/MasterClearConfirm.java
+++ b/src/com/android/settings/MasterClearConfirm.java
@@ -22,6 +22,7 @@
import android.content.pm.ActivityInfo;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.UserHandle;
import android.os.UserManager;
import android.provider.Settings;
import android.service.persistentdata.PersistentDataBlockManager;
@@ -32,6 +33,9 @@
import android.widget.TextView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
+import com.android.settingslib.RestrictedLockUtils;
+
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
/**
* Confirm and execute a reset of the device to a clean "just out of the box"
@@ -136,9 +140,16 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- if (UserManager.get(getActivity()).hasUserRestriction(
- UserManager.DISALLOW_FACTORY_RESET)) {
+ final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
+ getActivity(), UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId());
+ if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
+ UserManager.DISALLOW_FACTORY_RESET, UserHandle.myUserId())) {
return inflater.inflate(R.layout.master_clear_disallowed_screen, null);
+ } else if (admin != null) {
+ View view = inflater.inflate(R.layout.admin_support_details_empty_view, null);
+ ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(), view, admin, false);
+ view.setVisibility(View.VISIBLE);
+ return view;
}
mContentView = inflater.inflate(R.layout.master_clear_confirm, null);
establishFinalConfirmationState();
diff --git a/src/com/android/settings/ResetNetwork.java b/src/com/android/settings/ResetNetwork.java
index 18bd4f0..fe12924 100644
--- a/src/com/android/settings/ResetNetwork.java
+++ b/src/com/android/settings/ResetNetwork.java
@@ -20,6 +20,7 @@
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
+import android.os.UserHandle;
import android.os.UserManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
@@ -33,10 +34,13 @@
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
+import com.android.settingslib.RestrictedLockUtils;
import java.util.ArrayList;
import java.util.List;
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
+
/**
* Confirm and execute a reset of the device's network settings to a clean "just out of the box"
* state. Multiple confirmations are required: first, a general "are you sure you want to do this?"
@@ -180,9 +184,16 @@
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final UserManager um = UserManager.get(getActivity());
- if (!um.isAdminUser()
- || um.hasUserRestriction(UserManager.DISALLOW_NETWORK_RESET)) {
+ final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
+ getActivity(), UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
+ if (!um.isAdminUser() || RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
+ UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
return inflater.inflate(R.layout.network_reset_disallowed_screen, null);
+ } else if (admin != null) {
+ View view = inflater.inflate(R.layout.admin_support_details_empty_view, null);
+ ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(), view, admin, false);
+ view.setVisibility(View.VISIBLE);
+ return view;
}
mContentView = inflater.inflate(R.layout.reset_network, null);
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
index ad98bab..777f4d4 100644
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ b/src/com/android/settings/ResetNetworkConfirm.java
@@ -22,6 +22,7 @@
import android.net.NetworkPolicyManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
+import android.os.UserHandle;
import android.os.UserManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -34,6 +35,9 @@
import com.android.ims.ImsManager;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.telephony.PhoneConstants;
+import com.android.settingslib.RestrictedLockUtils;
+
+import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
/**
* Confirm and execute a reset of the network settings to a clean "just out of the box"
@@ -113,9 +117,16 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- if (UserManager.get(getActivity()).hasUserRestriction(
- UserManager.DISALLOW_NETWORK_RESET)) {
+ final EnforcedAdmin admin = RestrictedLockUtils.checkIfRestrictionEnforced(
+ getActivity(), UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId());
+ if (RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
+ UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) {
return inflater.inflate(R.layout.network_reset_disallowed_screen, null);
+ } else if (admin != null) {
+ View view = inflater.inflate(R.layout.admin_support_details_empty_view, null);
+ ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(), view, admin, false);
+ view.setVisibility(View.VISIBLE);
+ return view;
}
mContentView = inflater.inflate(R.layout.reset_network_confirm, null);
establishFinalConfirmationState();
diff --git a/src/com/android/settings/RestrictedSettingsFragment.java b/src/com/android/settings/RestrictedSettingsFragment.java
index ee7b6e7..0f2c033 100644
--- a/src/com/android/settings/RestrictedSettingsFragment.java
+++ b/src/com/android/settings/RestrictedSettingsFragment.java
@@ -27,6 +27,7 @@
import android.os.PersistableBundle;
import android.os.UserHandle;
import android.os.UserManager;
+import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
@@ -69,6 +70,9 @@
private EnforcedAdmin mEnforcedAdmin;
private TextView mEmptyTextView;
+ private boolean mOnlyAvailableForAdmins = false;
+ private boolean mIsAdminUser;
+
// Receiver to clear pin status when the screen is turned off.
private BroadcastReceiver mScreenOffReceiver = new BroadcastReceiver() {
@Override
@@ -96,6 +100,7 @@
mRestrictionsManager = (RestrictionsManager) getSystemService(Context.RESTRICTIONS_SERVICE);
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
+ mIsAdminUser = mUserManager.isAdminUser();
if (icicle != null) {
mChallengeSucceeded = icicle.getBoolean(KEY_CHALLENGE_SUCCEEDED, false);
@@ -198,26 +203,24 @@
return restricted && mRestrictionsManager.hasRestrictionsProvider();
}
- protected View initAdminSupportDetailsView() {
- return null;
+ private View initAdminSupportDetailsView() {
+ return getActivity().findViewById(R.id.admin_support_details);
}
protected TextView initEmptyTextView() {
- return null;
+ TextView emptyView = (TextView) getActivity().findViewById(android.R.id.empty);
+ emptyView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
+ return emptyView;
}
private void updateAdminSupportDetailsView() {
- mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
- mRestrictionKey, UserHandle.myUserId());
- if (mEnforcedAdmin != null) {
+ final EnforcedAdmin admin = getRestrictionEnforcedAdmin();
+ if (admin != null) {
final Activity activity = getActivity();
DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
Context.DEVICE_POLICY_SERVICE);
- if (mEnforcedAdmin.userId == UserHandle.USER_NULL) {
- mEnforcedAdmin.userId = UserHandle.myUserId();
- }
CharSequence supportMessage = dpm.getShortSupportMessageForUser(
- mEnforcedAdmin.component, mEnforcedAdmin.userId);
+ admin.component, admin.userId);
if (supportMessage != null) {
TextView textView = (TextView) activity.findViewById(R.id.admin_support_msg);
textView.setText(supportMessage);
@@ -226,6 +229,15 @@
}
}
+ public EnforcedAdmin getRestrictionEnforcedAdmin() {
+ mEnforcedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
+ mRestrictionKey, UserHandle.myUserId());
+ if (mEnforcedAdmin != null && mEnforcedAdmin.userId == UserHandle.USER_NULL) {
+ mEnforcedAdmin.userId = UserHandle.myUserId();
+ }
+ return mEnforcedAdmin;
+ }
+
@Override
public void onClick(View view) {
Intent intent = new Intent();
@@ -252,7 +264,9 @@
protected void onDataSetChanged() {
highlightPreferenceIfNeeded();
if (mAdminSupportDetails != null && isUiRestrictedByOnlyAdmin()) {
- updateAdminSupportDetailsView();
+ final EnforcedAdmin admin = getRestrictionEnforcedAdmin();
+ ShowAdminSupportDetailsDialog.setAdminSupportDetails(getActivity(),
+ mAdminSupportDetails, admin, false);
setEmptyView(mAdminSupportDetails);
} else if (mEmptyTextView != null) {
setEmptyView(mEmptyTextView);
@@ -260,15 +274,20 @@
super.onDataSetChanged();
}
+ public void setIfOnlyAvailableForAdmins(boolean onlyForAdmins) {
+ mOnlyAvailableForAdmins = onlyForAdmins;
+ }
+
/**
* Returns whether restricted or actionable UI elements should be removed or disabled.
*/
protected boolean isUiRestricted() {
- return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded();
+ return isRestrictedAndNotProviderProtected() || !hasChallengeSucceeded()
+ || (!mIsAdminUser && mOnlyAvailableForAdmins);
}
protected boolean isUiRestrictedByOnlyAdmin() {
return isUiRestricted() && !mUserManager.hasBaseUserRestriction(mRestrictionKey,
- UserHandle.of(UserHandle.myUserId()));
+ UserHandle.of(UserHandle.myUserId())) && (mIsAdminUser || !mOnlyAvailableForAdmins);
}
}
diff --git a/src/com/android/settings/ShowAdminSupportDetailsDialog.java b/src/com/android/settings/ShowAdminSupportDetailsDialog.java
index eccd9ea..f44c4b8 100644
--- a/src/com/android/settings/ShowAdminSupportDetailsDialog.java
+++ b/src/com/android/settings/ShowAdminSupportDetailsDialog.java
@@ -23,12 +23,14 @@
import android.app.IActivityManager;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
+import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
+import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;
@@ -58,7 +60,7 @@
mDialogView = LayoutInflater.from(this).inflate(
R.layout.admin_support_details_dialog, null);
- setAdminSupportDetails(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId);
+ setAdminSupportDetails(this, mDialogView, mEnforcedAdmin, true);
new AlertDialog.Builder(this)
.setView(mDialogView)
@@ -73,7 +75,7 @@
EnforcedAdmin admin = getAdminDetailsFromIntent(intent);
if (!mEnforcedAdmin.equals(admin)) {
mEnforcedAdmin = admin;
- setAdminSupportDetails(mDialogView, mEnforcedAdmin.component, mEnforcedAdmin.userId);
+ setAdminSupportDetails(this, mDialogView, mEnforcedAdmin, true);
}
}
@@ -102,14 +104,8 @@
return false;
}
- private void setAdminSupportDetails(View root, final ComponentName admin, final int userId) {
+ private void initializeDialogViews(View root, final ComponentName admin, int userId) {
if (admin != null) {
- CharSequence supportMessage = mDpm.getShortSupportMessageForUser(admin, userId);
- if (supportMessage != null) {
- TextView textView = (TextView) root.findViewById(R.id.admin_support_msg);
- textView.setText(supportMessage);
- }
-
ActivityInfo ai = null;
try {
ai = AppGlobals.getPackageManager().getReceiverInfo(admin, 0 /* flags */, userId);
@@ -125,25 +121,52 @@
}
}
+ setAdminSupportDetails(this, root, new EnforcedAdmin(admin, userId), true);
+ }
+
+ public static void setAdminSupportDetails(final Activity activity, View root,
+ final EnforcedAdmin enforcedAdmin, final boolean finishActivity) {
+ if (enforcedAdmin == null) {
+ return;
+ }
+ if (enforcedAdmin.component != null) {
+ DevicePolicyManager dpm = (DevicePolicyManager) activity.getSystemService(
+ Context.DEVICE_POLICY_SERVICE);
+ if (enforcedAdmin.userId == UserHandle.USER_NULL) {
+ enforcedAdmin.userId = UserHandle.myUserId();
+ }
+ CharSequence supportMessage = null;
+ if (UserHandle.isSameApp(Process.myUid(), Process.SYSTEM_UID)) {
+ supportMessage = dpm.getShortSupportMessageForUser(
+ enforcedAdmin.component, enforcedAdmin.userId);
+ }
+ if (supportMessage != null) {
+ TextView textView = (TextView) root.findViewById(R.id.admin_support_msg);
+ textView.setText(supportMessage);
+ }
+ }
+
root.findViewById(R.id.admins_policies_list).setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
- if (admin != null) {
- intent.setClass(ShowAdminSupportDetailsDialog.this,
- DeviceAdminAdd.class);
- intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, admin);
+ if (enforcedAdmin.component != null) {
+ intent.setClass(activity, DeviceAdminAdd.class);
+ intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
+ enforcedAdmin.component);
// DeviceAdminAdd class may need to run as managed profile.
- startActivityAsUser(intent, new UserHandle(userId));
+ activity.startActivityAsUser(intent,
+ new UserHandle(enforcedAdmin.userId));
} else {
- intent.setClass(ShowAdminSupportDetailsDialog.this,
- Settings.DeviceAdminSettingsActivity.class);
+ intent.setClass(activity, Settings.DeviceAdminSettingsActivity.class);
// Activity merges both managed profile and parent users
// admins so show as same user as this activity.
- startActivity(intent);
+ activity.startActivity(intent);
}
- finish();
+ if (finishActivity) {
+ activity.finish();
+ }
}
});
}
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index 3aa72d2..0338020 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -42,7 +42,6 @@
import android.support.v14.preference.SwitchPreference;
import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceScreen;
-import android.widget.TextView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.settings.wifi.WifiApDialog;
@@ -56,7 +55,7 @@
/*
* Displays preferences for Tethering.
*/
-public class TetherSettings extends SettingsPreferenceFragment
+public class TetherSettings extends RestrictedSettingsFragment
implements DialogInterface.OnClickListener, Preference.OnPreferenceChangeListener {
private static final String USB_TETHER_SETTINGS = "usb_tether_settings";
@@ -94,7 +93,6 @@
private WifiApDialog mDialog;
private WifiManager mWifiManager;
private WifiConfiguration mWifiConfig = null;
- private UserManager mUm;
private ConnectivityManager mCm;
private boolean mUsbConnected;
@@ -113,16 +111,18 @@
return MetricsEvent.TETHER;
}
+ public TetherSettings() {
+ super(UserManager.DISALLOW_CONFIG_TETHERING);
+ }
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.tether_prefs);
- mUm = (UserManager) getSystemService(Context.USER_SERVICE);
-
- if (mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_TETHERING)
- || !mUm.isAdminUser()) {
+ setIfOnlyAvailableForAdmins(true);
+ if (isUiRestricted()) {
mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getPrefContext(), null));
return;
@@ -259,11 +259,10 @@
super.onStart();
if (mUnavailable) {
- TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
- setEmptyView(emptyView);
- if (emptyView != null) {
- emptyView.setText(R.string.tethering_settings_not_available);
+ if (!isUiRestrictedByOnlyAdmin()) {
+ getEmptyTextView().setText(R.string.tethering_settings_not_available);
}
+ getPreferenceScreen().removeAll();
return;
}
diff --git a/src/com/android/settings/bluetooth/BluetoothSettings.java b/src/com/android/settings/bluetooth/BluetoothSettings.java
index e639005..9aa14fc 100644
--- a/src/com/android/settings/bluetooth/BluetoothSettings.java
+++ b/src/com/android/settings/bluetooth/BluetoothSettings.java
@@ -34,7 +34,6 @@
import android.text.Spannable;
import android.text.style.TextAppearanceSpan;
import android.util.Log;
-import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -379,18 +378,6 @@
}
}
- @Override
- protected TextView initEmptyTextView() {
- TextView textView = (TextView) getView().findViewById(android.R.id.empty);
- textView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
- return textView;
- }
-
- @Override
- protected View initAdminSupportDetailsView() {
- return getActivity().findViewById(R.id.admin_support_details);
- }
-
private void setOffMessage() {
final TextView emptyView = getEmptyTextView();
if (emptyView == null) {
diff --git a/src/com/android/settings/notification/ZenModeSettingsBase.java b/src/com/android/settings/notification/ZenModeSettingsBase.java
index 86d07be..ec1426d 100644
--- a/src/com/android/settings/notification/ZenModeSettingsBase.java
+++ b/src/com/android/settings/notification/ZenModeSettingsBase.java
@@ -28,9 +28,7 @@
import android.provider.Settings.Global;
import android.service.notification.ZenModeConfig;
import android.util.Log;
-import android.view.View;
-import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
import java.util.List;
@@ -79,11 +77,6 @@
}
@Override
- protected View initAdminSupportDetailsView() {
- return getActivity().findViewById(R.id.admin_support_details);
- }
-
- @Override
public void onPause() {
super.onPause();
mSettingsObserver.unregister();
diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java
index 4cbb3df..6f56b06 100644
--- a/src/com/android/settings/vpn2/VpnSettings.java
+++ b/src/com/android/settings/vpn2/VpnSettings.java
@@ -49,7 +49,6 @@
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
-import android.widget.TextView;
import com.android.internal.logging.MetricsProto.MetricsEvent;
import com.android.internal.net.LegacyVpnInfo;
@@ -57,7 +56,8 @@
import com.android.internal.net.VpnProfile;
import com.android.internal.util.ArrayUtils;
import com.android.settings.R;
-import com.android.settings.SettingsPreferenceFragment;
+import com.android.settings.RestrictedSettingsFragment;
+import com.android.settingslib.RestrictedLockUtils;
import com.google.android.collect.Lists;
import java.util.ArrayList;
@@ -72,7 +72,7 @@
* Settings screen listing VPNs. Configured VPNs and networks managed by apps
* are shown in the same list.
*/
-public class VpnSettings extends SettingsPreferenceFragment implements
+public class VpnSettings extends RestrictedSettingsFragment implements
Handler.Callback, Preference.OnPreferenceClickListener {
private static final String LOG_TAG = "VpnSettings";
@@ -101,6 +101,10 @@
private boolean mUnavailable;
+ public VpnSettings() {
+ super(UserManager.DISALLOW_CONFIG_VPN);
+ }
+
@Override
protected int getMetricsCategory() {
return MetricsEvent.VPN;
@@ -111,7 +115,7 @@
super.onCreate(savedState);
mUserManager = (UserManager) getSystemService(Context.USER_SERVICE);
- if (mUserManager.hasUserRestriction(UserManager.DISALLOW_CONFIG_VPN)) {
+ if (isUiRestricted()) {
mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getPrefContext(), null));
setHasOptionsMenu(false);
@@ -136,7 +140,12 @@
// Disable all actions if VPN configuration has been disallowed
for (int i = 0; i < menu.size(); i++) {
- menu.getItem(i).setEnabled(!mUnavailable);
+ if (isUiRestrictedByOnlyAdmin()) {
+ RestrictedLockUtils.setMenuItemAsDisabledByAdmin(getPrefContext(),
+ menu.getItem(i), getRestrictionEnforcedAdmin());
+ } else {
+ menu.getItem(i).setEnabled(!mUnavailable);
+ }
}
// Hide lockdown VPN on devices that require IMS authentication
@@ -172,11 +181,10 @@
if (mUnavailable) {
// Show a message to explain that VPN settings have been disabled
- TextView emptyView = (TextView) getView().findViewById(android.R.id.empty);
- setEmptyView(emptyView);
- if (emptyView != null) {
- emptyView.setText(R.string.vpn_settings_not_available);
+ if (!isUiRestrictedByOnlyAdmin()) {
+ getEmptyTextView().setText(R.string.vpn_settings_not_available);
}
+ getPreferenceScreen().removeAll();
return;
}
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index b7a0f81..12e5c54 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -54,7 +54,6 @@
import android.util.TypedValue;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
-import android.view.Gravity;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -721,18 +720,6 @@
}
}
- @Override
- protected TextView initEmptyTextView() {
- TextView emptyView = (TextView) getActivity().findViewById(android.R.id.empty);
- emptyView.setGravity(Gravity.START | Gravity.CENTER_VERTICAL);
- return emptyView;
- }
-
- @Override
- protected View initAdminSupportDetailsView() {
- return getActivity().findViewById(R.id.admin_support_details);
- }
-
private void setOffMessage() {
if (isUiRestricted()) {
if (!isUiRestrictedByOnlyAdmin()) {