<item>3</item>
</string-array>
+ <string-array name="root_access_entries_adb" translatable="false">
+ <item>@string/root_access_none</item>
+ <item>@string/root_access_adb</item>
+ </string-array>
+
+ <string-array name="root_access_values_adb" translatable="false">
+ <item>0</item>
+ <item>2</item>
+ </string-array>
+
<!-- Profile lock mode summaries. Do not translate. -->
<string-array name="profile_lockmode_entries" translatable="false">
<item>@string/profile_action_system</item>
<ListPreference
android:key="root_access"
android:title="@string/root_access"
- android:persistent="false"
- android:entries="@array/root_access_entries"
- android:entryValues="@array/root_access_values" />
+ android:persistent="false" />
<SwitchPreference
android:key="update_recovery"
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;
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;
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);
}
.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 =