diff options
| author | Tom Marshall <tdm@cyngn.com> | 2016-06-27 14:31:57 -0700 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2016-06-29 11:33:41 -0700 |
| commit | 7534d77b433ffa7223d7fe817f34e3daa306dc06 (patch) | |
| tree | 7441dd5e26bb79dc1217dd7a5c1be33df5f4dd41 /src/com/android | |
| parent | 57ca3ae789be986f816514e024e5a0decc764f0e (diff) | |
| download | packages_apps_Settings-7534d77b433ffa7223d7fe817f34e3daa306dc06.tar.gz packages_apps_Settings-7534d77b433ffa7223d7fe817f34e3daa306dc06.tar.bz2 packages_apps_Settings-7534d77b433ffa7223d7fe817f34e3daa306dc06.zip | |
Settings: Set root access options appropriately
It is possible to be running a user build with a debuggable boot image.
In this case, "su" will not be available. So only show none/adb.
Jira: BACON-4461
Change-Id: Iaa7df8311b9ea81eabb1566ba6f9159fdc9fab34
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index cfdf921ff..5ae3b1b74 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -85,6 +85,7 @@ import com.android.settings.search.Indexable; import com.android.settings.widget.SwitchBar; import cyanogenmod.providers.CMSettings; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; @@ -210,6 +211,9 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private static final int[] MOCK_LOCATION_APP_OPS = new int[] {AppOpsManager.OP_MOCK_LOCATION}; private static final String MULTI_WINDOW_SYSTEM_PROPERTY = "persist.sys.debug.multi_window"; + + private static final String SUPERUSER_BINARY_PATH = "/system/xbin/su"; + private IWindowManager mWindowManager; private IBackupManager mBackupManager; private DevicePolicyManager mDpm; @@ -474,6 +478,13 @@ public class DevelopmentSettings extends SettingsPreferenceFragment mRootAccess = (ListPreference) findPreference(ROOT_ACCESS_KEY); mRootAccess.setOnPreferenceChangeListener(this); if (!removeRootOptionsIfRequired()) { + if (isRootForAppsAvailable()) { + mRootAccess.setEntries(R.array.root_access_entries); + mRootAccess.setEntryValues(R.array.root_access_values); + } else { + mRootAccess.setEntries(R.array.root_access_entries_adb); + mRootAccess.setEntryValues(R.array.root_access_values_adb); + } mAllPrefs.add(mRootAccess); } @@ -832,6 +843,17 @@ public class DevelopmentSettings extends SettingsPreferenceFragment .getStringArray(R.array.root_access_entries)[Integer.valueOf(value)]); } + private boolean isRootForAppsAvailable() { + boolean exists = false; + try { + File f = new File(SUPERUSER_BINARY_PATH); + exists = f.exists(); + } catch (SecurityException e) { + // Ignore + } + return exists; + } + public static boolean isRootForAppsEnabled() { int value = SystemProperties.getInt(ROOT_ACCESS_PROPERTY, 0); boolean daemonState = |
