diff options
Diffstat (limited to 'src')
| -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 = |
