Settings user restriction changes: debugging features.
Replacing restriction pin with a user restriction for developer options.
Bug: 14081992
Change-Id: I9a71c256fbd20428b4bd2ae12939c9a50d7b5f11
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java
index c666dd3..bc78330 100644
--- a/src/com/android/settings/DevelopmentSettings.java
+++ b/src/com/android/settings/DevelopmentSettings.java
@@ -46,6 +46,7 @@
import android.os.StrictMode;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.UserManager;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
import android.preference.Preference;
@@ -75,7 +76,7 @@
/*
* Displays preferences for application developers.
*/
-public class DevelopmentSettings extends RestrictedSettingsFragment
+public class DevelopmentSettings extends SettingsPreferenceFragment
implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
OnPreferenceChangeListener, CompoundButton.OnCheckedChangeListener {
private static final String TAG = "DevelopmentSettings";
@@ -160,6 +161,7 @@
private IWindowManager mWindowManager;
private IBackupManager mBackupManager;
private DevicePolicyManager mDpm;
+ private UserManager mUm;
private Switch mEnabledSwitch;
private boolean mLastEnabledState;
@@ -230,10 +232,6 @@
private boolean mUnavailable;
- public DevelopmentSettings() {
- super(RESTRICTIONS_PIN_SET);
- }
-
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -242,8 +240,10 @@
mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE));
mDpm = (DevicePolicyManager)getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
+ mUm = (UserManager) getSystemService(Context.USER_SERVICE);
- if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER) {
+ if (android.os.Process.myUserHandle().getIdentifier() != UserHandle.USER_OWNER
+ || mUm.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) {
mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return;
diff --git a/src/com/android/settings/DeviceInfoSettings.java b/src/com/android/settings/DeviceInfoSettings.java
index bf303df..9d10ecb 100644
--- a/src/com/android/settings/DeviceInfoSettings.java
+++ b/src/com/android/settings/DeviceInfoSettings.java
@@ -31,6 +31,7 @@
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserHandle;
+import android.os.UserManager;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen;
@@ -46,7 +47,7 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class DeviceInfoSettings extends RestrictedSettingsFragment {
+public class DeviceInfoSettings extends SettingsPreferenceFragment {
private static final String LOG_TAG = "DeviceInfoSettings";
private static final String FILENAME_PROC_VERSION = "/proc/version";
@@ -79,20 +80,12 @@
int mDevHitCountdown;
Toast mDevHitToast;
- public DeviceInfoSettings() {
- super(null /* Don't PIN protect the entire screen */);
- }
-
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.device_info_settings);
- // We only call ensurePinRestrictedPreference() when mDevHitCountdown == 0.
- // This will keep us from entering developer mode without a PIN.
- protectByRestrictions(KEY_BUILD_NUMBER);
-
setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);
findPreference(KEY_FIRMWARE_VERSION).setEnabled(true);
setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
@@ -204,12 +197,10 @@
// Don't enable developer options for secondary users.
if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true;
+ final UserManager um = (UserManager) getSystemService(Context.USER_SERVICE);
+ if (um.hasUserRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES)) return true;
+
if (mDevHitCountdown > 0) {
- if (mDevHitCountdown == 1) {
- if (super.ensurePinRestrictedPreference(preference)) {
- return true;
- }
- }
mDevHitCountdown--;
if (mDevHitCountdown == 0) {
getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 56ee3ac..0608e92 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -1067,7 +1067,8 @@
}
}
} else if (id == R.id.development_settings) {
- if (!showDev) {
+ if (!showDev || um.hasUserRestriction(
+ UserManager.DISALLOW_DEBUGGING_FEATURES)) {
category.removeTile(n);
}
} else if (id == R.id.account_add) {