Settings user restriction changes: debugging features.

Replacing restriction pin with a user restriction for developer options.
Bug: 14081992

Change-Id: I9a71c256fbd20428b4bd2ae12939c9a50d7b5f11
This commit is contained in:
Julia Reynolds
2014-05-08 09:29:41 -04:00
parent d65928c558
commit 6c088cb221
3 changed files with 13 additions and 21 deletions

View File

@@ -46,6 +46,7 @@ import android.os.ServiceManager;
import android.os.StrictMode; import android.os.StrictMode;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.preference.CheckBoxPreference; import android.preference.CheckBoxPreference;
import android.preference.ListPreference; import android.preference.ListPreference;
import android.preference.Preference; import android.preference.Preference;
@@ -75,7 +76,7 @@ import java.util.List;
/* /*
* Displays preferences for application developers. * Displays preferences for application developers.
*/ */
public class DevelopmentSettings extends RestrictedSettingsFragment public class DevelopmentSettings extends SettingsPreferenceFragment
implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener, implements DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
OnPreferenceChangeListener, CompoundButton.OnCheckedChangeListener { OnPreferenceChangeListener, CompoundButton.OnCheckedChangeListener {
private static final String TAG = "DevelopmentSettings"; private static final String TAG = "DevelopmentSettings";
@@ -160,6 +161,7 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
private IWindowManager mWindowManager; private IWindowManager mWindowManager;
private IBackupManager mBackupManager; private IBackupManager mBackupManager;
private DevicePolicyManager mDpm; private DevicePolicyManager mDpm;
private UserManager mUm;
private Switch mEnabledSwitch; private Switch mEnabledSwitch;
private boolean mLastEnabledState; private boolean mLastEnabledState;
@@ -230,10 +232,6 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
private boolean mUnavailable; private boolean mUnavailable;
public DevelopmentSettings() {
super(RESTRICTIONS_PIN_SET);
}
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
@@ -242,8 +240,10 @@ public class DevelopmentSettings extends RestrictedSettingsFragment
mBackupManager = IBackupManager.Stub.asInterface( mBackupManager = IBackupManager.Stub.asInterface(
ServiceManager.getService(Context.BACKUP_SERVICE)); ServiceManager.getService(Context.BACKUP_SERVICE));
mDpm = (DevicePolicyManager)getActivity().getSystemService(Context.DEVICE_POLICY_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; mUnavailable = true;
setPreferenceScreen(new PreferenceScreen(getActivity(), null)); setPreferenceScreen(new PreferenceScreen(getActivity(), null));
return; return;

View File

@@ -31,6 +31,7 @@ import android.os.SELinux;
import android.os.SystemClock; import android.os.SystemClock;
import android.os.SystemProperties; import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.preference.Preference; import android.preference.Preference;
import android.preference.PreferenceGroup; import android.preference.PreferenceGroup;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
@@ -46,7 +47,7 @@ import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; 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 LOG_TAG = "DeviceInfoSettings";
private static final String FILENAME_PROC_VERSION = "/proc/version"; private static final String FILENAME_PROC_VERSION = "/proc/version";
@@ -79,20 +80,12 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment {
int mDevHitCountdown; int mDevHitCountdown;
Toast mDevHitToast; Toast mDevHitToast;
public DeviceInfoSettings() {
super(null /* Don't PIN protect the entire screen */);
}
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
addPreferencesFromResource(R.xml.device_info_settings); 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); setStringSummary(KEY_FIRMWARE_VERSION, Build.VERSION.RELEASE);
findPreference(KEY_FIRMWARE_VERSION).setEnabled(true); findPreference(KEY_FIRMWARE_VERSION).setEnabled(true);
setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband"); setValueSummary(KEY_BASEBAND_VERSION, "gsm.version.baseband");
@@ -204,12 +197,10 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment {
// Don't enable developer options for secondary users. // Don't enable developer options for secondary users.
if (UserHandle.myUserId() != UserHandle.USER_OWNER) return true; 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 > 0) {
if (mDevHitCountdown == 1) {
if (super.ensurePinRestrictedPreference(preference)) {
return true;
}
}
mDevHitCountdown--; mDevHitCountdown--;
if (mDevHitCountdown == 0) { if (mDevHitCountdown == 0) {
getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE, getActivity().getSharedPreferences(DevelopmentSettings.PREF_FILE,

View File

@@ -1067,7 +1067,8 @@ public class SettingsActivity extends Activity
} }
} }
} else if (id == R.id.development_settings) { } else if (id == R.id.development_settings) {
if (!showDev) { if (!showDev || um.hasUserRestriction(
UserManager.DISALLOW_DEBUGGING_FEATURES)) {
category.removeTile(n); category.removeTile(n);
} }
} else if (id == R.id.account_add) { } else if (id == R.id.account_add) {