+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2012-2014 The CyanogenMod Project
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-<resources>
- <!-- Arrays for root access capability -->
- <string-array name="root_access_entries">
- <item>@string/root_access_none</item>
- <item>@string/root_access_apps</item>
- <item>@string/root_access_adb</item>
- <item>@string/root_access_all</item>
- </string-array>
-
- <string-array name="root_access_values">
- <item>0</item>
- <item>1</item>
- <item>2</item>
- <item>3</item>
- </string-array>
-</resources>
\ No newline at end of file
+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2012-2014 The CyanogenMod Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <!-- Setting checkbox title for root access -->
- <string name="root_access">Root access</string>
- <string name="root_access_warning_title">Allow root access?</string>
- <string name="root_access_warning_message">Allowing applications to request root access is very dangerous and could compromise the security of your system!</string>
- <string name="root_access_none">Disabled</string>
- <string name="root_access_apps">Apps only</string>
- <string name="root_access_adb">ADB only</string>
- <string name="root_access_all">Apps and ADB</string>
-</resources>
private static final String OPENGL_TRACES_KEY = "enable_opengl_traces";
- private static final String ROOT_ACCESS_KEY = "root_access";
- private static final String ROOT_ACCESS_PROPERTY = "persist.sys.root_access";
-
private static final String IMMEDIATELY_DESTROY_ACTIVITIES_KEY
= "immediately_destroy_activities";
private static final String APP_PROCESS_LIMIT_KEY = "app_process_limit";
private ColorModePreference mColorModePreference;
- private PreferenceScreen mProcessStats;
- private ListPreference mRootAccess;
- private Object mSelectedRootValue;
-
private final ArrayList<Preference> mAllPrefs = new ArrayList<Preference>();
private final ArrayList<SwitchPreference> mResetSwitchPrefs
private Dialog mAdbKeysDialog;
private boolean mUnavailable;
- private Dialog mRootDialog;
@Override
protected int getMetricsCategory() {
removePreference(KEY_COLOR_MODE);
mColorModePreference = null;
}
-
- mRootAccess = (ListPreference) findPreference(ROOT_ACCESS_KEY);
- mRootAccess.setOnPreferenceChangeListener(this);
- if (!removeRootOptionsIfRequired()) {
- mAllPrefs.add(mRootAccess);
- }
}
private ListPreference addListPreference(String prefKey) {
return pref;
}
- private boolean removeRootOptionsIfRequired() {
- // user builds don't get root, and eng always gets root
- if (!(Build.IS_DEBUGGABLE || "eng".equals(Build.TYPE))) {
- if (mRootAccess != null) {
- getPreferenceScreen().removePreference(mRootAccess);
- return true;
- }
- }
-
- return false;
- }
-
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
updateMobileDataAlwaysOnOptions();
updateSimulateColorSpace();
updateUSBAudioOptions();
- updateRootAccessOptions();
}
private void resetDangerousOptions() {
}
resetDebuggerOptions();
writeLogdSizeOption(null);
- resetRootAccessOptions();
writeAnimationScaleOption(0, mWindowAnimationScale, null);
writeAnimationScaleOption(1, mTransitionAnimationScale, null);
writeAnimationScaleOption(2, mAnimatorDurationScale, null);
pokeSystemProperties();
}
- private void updateRootAccessOptions() {
- String value = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
- mRootAccess.setValue(value);
- mRootAccess.setSummary(getResources()
- .getStringArray(R.array.root_access_entries)[Integer.valueOf(value)]);
- }
-
- private void writeRootAccessOptions(Object newValue) {
- String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
- SystemProperties.set(ROOT_ACCESS_PROPERTY, newValue.toString());
- if (Integer.valueOf(newValue.toString()) < 2 && !oldValue.equals(newValue)
- && "1".equals(SystemProperties.get("service.adb.root", "0"))) {
- SystemProperties.set("service.adb.root", "0");
- Settings.Secure.putInt(getActivity().getContentResolver(),
- Settings.Secure.ADB_ENABLED, 0);
- Settings.Secure.putInt(getActivity().getContentResolver(),
- Settings.Secure.ADB_ENABLED, 1);
- }
- updateRootAccessOptions();
- }
-
- private void resetRootAccessOptions() {
- String oldValue = SystemProperties.get(ROOT_ACCESS_PROPERTY, "1");
- SystemProperties.set(ROOT_ACCESS_PROPERTY, "1");
- if (!oldValue.equals("1") && "1".equals(SystemProperties.get("service.adb.root", "0"))) {
- SystemProperties.set("service.adb.root", "0");
- Settings.Secure.putInt(getActivity().getContentResolver(),
- Settings.Secure.ADB_ENABLED, 0);
- Settings.Secure.putInt(getActivity().getContentResolver(),
- Settings.Secure.ADB_ENABLED, 1);
- }
- updateRootAccessOptions();
- }
-
private void updateHdcpValues() {
ListPreference hdcpChecking = (ListPreference) findPreference(HDCP_CHECKING_KEY);
if (hdcpChecking != null) {
} else if (preference == mSimulateColorSpace) {
writeSimulateColorSpace(newValue);
return true;
- } else if (preference == mRootAccess) {
- if ("0".equals(SystemProperties.get(ROOT_ACCESS_PROPERTY, "1"))
- && !"0".equals(newValue)) {
- mSelectedRootValue = newValue;
- mDialogClicked = false;
- if (mRootDialog != null) {
- dismissDialogs();
- }
- mRootDialog = new AlertDialog.Builder(getActivity())
- .setMessage(getResources().getString(R.string.root_access_warning_message))
- .setTitle(R.string.root_access_warning_title)
- .setIcon(android.R.drawable.ic_dialog_alert)
- .setPositiveButton(android.R.string.yes, this)
- .setNegativeButton(android.R.string.no, this).show();
- mRootDialog.setOnDismissListener(this);
- } else {
- writeRootAccessOptions(newValue);
- }
- return true;
}
return false;
}
mEnableDialog.dismiss();
mEnableDialog = null;
}
- if (mRootDialog != null) {
- mRootDialog.dismiss();
- mRootDialog = null;
- }
}
public void onClick(DialogInterface dialog, int which) {
// Reset the toggle
mSwitchBar.setChecked(false);
}
- } else if (dialog == mRootDialog) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- writeRootAccessOptions(mSelectedRootValue);
- } else {
- // Reset the option
- writeRootAccessOptions("0");
- }
}
}