Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd013c97 authored by Adrian DC's avatar Adrian DC Committed by Gerrit Code Review
Browse files

Settings: Root appops access in developer settings



 * Allow users to directly access the root app settings,
    as the feature is mostly unknown and often a reason
    for users to try using alternatives to CM root

 * Use the appops extra intent to link the su tab,
    introduced in I79d963ecbadc624dc45a398387a348691318b6be

RM-290
Change-Id: Ia5bc9d56fb11700b19d73336fad13c0a936091ff
Signed-off-by: default avatarAdrian DC <radian.dc@gmail.com>
(cherry picked from commit 830a8464)
parent b5ca38e0
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -41,6 +41,10 @@
    <string name="root_access_adb">ADB only</string>
    <string name="root_access_all">Apps and ADB</string>

    <!-- Preference link for root appops -->
    <string name="root_appops_title">Manage root accesses</string>
    <string name="root_appops_summary">View and control the root rules</string>

    <!-- NFC PreferenceCategory title -->
    <string name="nfc_title_category">NFC</string>

+5 −0
Original line number Diff line number Diff line
@@ -84,6 +84,11 @@
        android:title="@string/root_access"
        android:persistent="false" />

    <Preference
        android:key="root_appops"
        android:title="@string/root_appops_title"
        android:summary="@string/root_appops_summary" />

    <SwitchPreference
        android:key="update_recovery"
        android:title="@string/update_recovery_title"
+21 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ import android.widget.TextView;
import android.widget.Toast;

import com.android.internal.logging.MetricsLogger;
import com.android.settings.Settings.AppOpsSummaryActivity;
import com.android.settings.fuelgauge.InactiveApps;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settings.search.Indexable;
@@ -178,6 +179,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
    private static final String ROOT_ACCESS_KEY = "root_access";
    private static final String ROOT_ACCESS_PROPERTY = "persist.sys.root_access";

    private static final String ROOT_APPOPS_KEY = "root_appops";

    private static final String UPDATE_RECOVERY_KEY = "update_recovery";
    private static final String UPDATE_RECOVERY_PROPERTY = "persist.sys.recovery_update";

@@ -292,6 +295,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
    private PreferenceScreen mDevelopmentTools;
    private ColorModePreference mColorModePreference;

    private Preference mRootAppops;

    private SwitchPreference mAdvancedReboot;

    private SwitchPreference mUpdateRecovery;
@@ -477,6 +482,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment

        mRootAccess = (ListPreference) findPreference(ROOT_ACCESS_KEY);
        mRootAccess.setOnPreferenceChangeListener(this);

        mRootAppops = (Preference) findPreference(ROOT_APPOPS_KEY);
        mRootAppops.setOnPreferenceClickListener(this);

        if (!removeRootOptionsIfRequired()) {
            if (isRootForAppsAvailable()) {
                mRootAccess.setEntries(R.array.root_access_entries);
@@ -486,6 +495,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
                mRootAccess.setEntryValues(R.array.root_access_values_adb);
            }
            mAllPrefs.add(mRootAccess);
            mAllPrefs.add(mRootAppops);
        }

        mDevelopmentTools = (PreferenceScreen) findPreference(DEVELOPMENT_TOOLS);
@@ -841,6 +851,10 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
        mRootAccess.setValue(value);
        mRootAccess.setSummary(getResources()
                .getStringArray(R.array.root_access_entries)[Integer.valueOf(value)]);

        if (mRootAppops != null) {
            mRootAppops.setEnabled(isRootForAppsEnabled());
        }
    }

    private boolean isRootForAppsAvailable() {
@@ -1910,6 +1924,13 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
                preference == mTransitionAnimationScale ||
                preference == mAnimatorDurationScale) {
            ((AnimationScalePreference) preference).click();
        } else if (preference == mRootAppops) {
            Activity mActivity = getActivity();
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.putExtra("appops_tab", getString(R.string.app_ops_categories_su));
            intent.setClass(mActivity, AppOpsSummaryActivity.class);
            mActivity.startActivity(intent);
            return true;
        }
        return false;
    }