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

Commit 6ef27230 authored by Jason Monk's avatar Jason Monk
Browse files

Remove all apps page

Instead move the functionality back into overflow menu as show/hide
system apps. Also move the reset app preferences from advanced to
the overflow menu.

Bug: 20210160
Change-Id: Ied573e1f7dfc438b06642ee2af8f11868130ba3b
parent 687e863d
Loading
Loading
Loading
Loading
+21 −2
Original line number Diff line number Diff line
@@ -18,6 +18,25 @@
    <item
        android:id="@+id/advanced"
        android:title="@string/advanced_apps"
        android:icon="@drawable/ic_settings_24dp"
        android:showAsAction="collapseActionView|ifRoom" />
        android:showAsAction="never" />
    <item
        android:id="@+id/show_system"
        android:title="@string/menu_show_system"
        android:showAsAction="never" />
    <item
        android:id="@+id/hide_system"
        android:title="@string/menu_hide_system"
        android:showAsAction="never" />
    <item
        android:id="@+id/sort_order_alpha"
        android:title="@string/sort_order_alpha"
        android:showAsAction="never" />
    <item
        android:id="@+id/sort_order_size"
        android:title="@string/sort_order_size"
        android:showAsAction="never" />
    <item
        android:id="@+id/reset_app_preferences"
        android:title="@string/reset_app_preferences"
        android:showAsAction="never" />
</menu>
+3 −7
Original line number Diff line number Diff line
@@ -4234,8 +4234,10 @@
    <string name="menu_duration_12h">12 hours</string>
    <!-- [CHAR LIMIT=NONE] Menu for process stats to show 3 hours of data -->
    <string name="menu_duration_1d">1 day</string>
    <!-- [CHAR LIMIT=NONE] Menu for process stats to control whether system processes are shown -->
    <!-- [CHAR LIMIT=NONE] Menu for manage apps to control whether system processes are shown -->
    <string name="menu_show_system">Show system</string>
    <!-- [CHAR LIMIT=NONE] Menu for manage apps to control whether system processes are hidden -->
    <string name="menu_hide_system">Hide system</string>
    <!-- [CHAR LIMIT=NONE] Menu for process stats to control whether computation should be based
        on Uss (Unique Set Size) instead of Pss (Proportional Set Size) -->
    <string name="menu_use_uss">Use Uss</string>
@@ -6359,15 +6361,9 @@
    <!-- Label for showing apps with domain URLs (data URI with http or https) in list [CHAR LIMIT=30] -->
    <string name="filter_with_domain_urls_apps">With domain URLs</string>

    <!-- Description for advanced menu option to reset app preferences [CHAR LIMIT=NONE] -->
    <string name="reset_app_preferences_description">Reset preferences across all apps to defaults</string>

    <!-- Summary for a trust agent that was disabled by the device policy [LIMIT=NONE] -->
    <string name="trust_agent_disabled_device_admin">Disabled by administrator</string>

    <!-- Description of settings item that leads to list of all apps [CHAR LIMIT=NONE] -->
    <string name="all_apps_summary"><xliff:g id="count" example="10">%d</xliff:g> apps installed, including system and downloaded apps</string>

    <!-- Title for advanced application management settings [CHAR LIMIT=30] -->
    <string name="advanced_apps">Advanced</string>

+0 −16
Original line number Diff line number Diff line
@@ -40,22 +40,6 @@
                android:value="com.android.settings.Settings$DomainsURLsAppListActivity" />
    </PreferenceScreen>

    <PreferenceScreen
        android:key="all_apps"
        android:fragment="com.android.settings.applications.ManageApplications"
        android:title="@string/filter_all_apps"
        settings:keywords="@string/keywords_all_apps">
        <extra
            android:name="classname"
            android:value="com.android.settings.Settings$AllApplicationsActivity" />
    </PreferenceScreen>

    <Preference
        android:key="reset_all"
        android:title="@string/reset_app_preferences"
        android:summary="@string/reset_app_preferences_description"
        settings:keywords="@string/keywords_reset_apps" />

    <com.android.settings.applications.DefaultEmergencyPreference
        android:key="default_emergency_app"
        android:title="@string/default_emergency_app"
+2 −162
Original line number Diff line number Diff line
@@ -15,33 +15,13 @@
 */
package com.android.settings.applications;

import static android.net.NetworkPolicyManager.POLICY_NONE;
import static android.net.NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.AppOpsManager;
import android.app.INotificationManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageManager;
import android.content.pm.PackageManager;
import android.net.NetworkPolicyManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.provider.SearchIndexableResource;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.android.internal.logging.MetricsLogger;
import com.android.settings.R;
@@ -56,35 +36,20 @@ import com.android.settings.search.Indexable;
import java.util.ArrayList;
import java.util.List;

public class AdvancedAppSettings extends SettingsPreferenceFragment implements Callbacks,
        DialogInterface.OnClickListener, DialogInterface.OnDismissListener, Callback, Indexable {
public class AdvancedAppSettings extends SettingsPreferenceFragment implements Callbacks, Callback,
        Indexable {

    static final String TAG = "AdvancedAppSettings";
    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);

    private static final String KEY_APP_PERM = "manage_perms";
    private static final String KEY_ALL_APPS = "all_apps";
    private static final String KEY_APP_DOMAIN_URLS = "domain_urls";
    private static final String KEY_RESET_ALL = "reset_all";
    private static final String KEY_DEFAULT_EMERGENCY_APP = "default_emergency_app";
    private static final String EXTRA_RESET_DIALOG = "resetDialog";

    private ApplicationsState mApplicationsState;
    private Session mSession;
    private Preference mAppPermsPreference;
    private Preference mAppDomainURLsPreference;
    private Preference mAllAppsPreference;
    private Preference mResetAllPreference;

    AlertDialog mResetDialog;

    private boolean mActivityResumed;
    private PackageManager mPm;
    private IPackageManager mIPm;
    private INotificationManager mNm;
    private NetworkPolicyManager mNpm;
    private AppOpsManager mAom;
    private Handler mHandler;
    private PermissionsInfo mPermissionsInfo;

    @Override
@@ -97,25 +62,8 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C

        mAppPermsPreference = findPreference(KEY_APP_PERM);
        mAppDomainURLsPreference = findPreference(KEY_APP_DOMAIN_URLS);
        mAllAppsPreference = findPreference(KEY_ALL_APPS);
        mResetAllPreference = findPreference(KEY_RESET_ALL);
        mResetAllPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
            @Override
            public boolean onPreferenceClick(Preference preference) {
                buildResetDialog();
                return true;
            }
        });
        updateUI();

        mPm = getActivity().getPackageManager();
        mIPm = IPackageManager.Stub.asInterface(ServiceManager.getService("package"));
        mNm = INotificationManager.Stub.asInterface(
                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
        mNpm = NetworkPolicyManager.from(getActivity());
        mAom = (AppOpsManager)getActivity().getSystemService(Context.APP_OPS_SERVICE);
        mHandler = new Handler(getActivity().getMainLooper());

        if (!DefaultEmergencyPreference.isAvailable(getActivity())) {
            removePreference(KEY_DEFAULT_EMERGENCY_APP);
        }
@@ -123,7 +71,6 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C

    private void updateUI() {
        ArrayList<AppEntry> allApps = mSession.getAllApps();
        mAllAppsPreference.setSummary(getString(R.string.all_apps_summary, allApps.size()));

        int countAppWithDomainURLs = 0;
        for (AppEntry entry : allApps) {
@@ -136,25 +83,6 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
        mAppDomainURLsPreference.setSummary(summary);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        if (savedInstanceState != null && savedInstanceState.getBoolean(EXTRA_RESET_DIALOG)) {
            buildResetDialog();
        }

        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mResetDialog != null) {
            mResetDialog.dismiss();
            mResetDialog = null;
        }
    }

    @Override
    protected int getMetricsCategory() {
        return MetricsLogger.APPLICATIONS_ADVANCED;
@@ -163,97 +91,9 @@ public class AdvancedAppSettings extends SettingsPreferenceFragment implements C
    @Override
    public void onResume() {
        super.onResume();
        mActivityResumed = true;
        mPermissionsInfo = new PermissionsInfo(getActivity(), this);
    }

    @Override
    public void onPause() {
        mActivityResumed = false;
        super.onPause();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        if (mResetDialog != null) {
            outState.putBoolean(EXTRA_RESET_DIALOG, true);
        }
    }

    void buildResetDialog() {
        if (mResetDialog == null) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle(R.string.reset_app_preferences_title);
            builder.setMessage(R.string.reset_app_preferences_desc);
            builder.setPositiveButton(R.string.reset_app_preferences_button, this);
            builder.setNegativeButton(R.string.cancel, null);
            mResetDialog = builder.show();
            mResetDialog.setOnDismissListener(this);
        }
    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        if (mResetDialog == dialog) {
            mResetDialog = null;
        }
    }

    @Override
    public void onClick(DialogInterface dialog, int which) {
        if (mResetDialog == dialog) {
            (new AsyncTask<Void, Void, Void>() {
                @Override protected Void doInBackground(Void... params) {
                    List<ApplicationInfo> apps = mPm.getInstalledApplications(
                            PackageManager.GET_DISABLED_COMPONENTS);
                    for (int i=0; i<apps.size(); i++) {
                        ApplicationInfo app = apps.get(i);
                        try {
                            if (DEBUG) Log.v(TAG, "Enabling notifications: " + app.packageName);
                            mNm.setNotificationsEnabledForPackage(app.packageName, app.uid, true);
                        } catch (android.os.RemoteException ex) {
                        }
                        if (!app.enabled) {
                            if (DEBUG) Log.v(TAG, "Enabling app: " + app.packageName);
                            if (mPm.getApplicationEnabledSetting(app.packageName)
                                    == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
                                mPm.setApplicationEnabledSetting(app.packageName,
                                        PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
                                        PackageManager.DONT_KILL_APP);
                            }
                        }
                    }
                    try {
                        mIPm.resetPreferredActivities(UserHandle.myUserId());
                    } catch (RemoteException e) {
                    }
                    mAom.resetAllModes();
                    final int[] restrictedUids = mNpm.getUidsWithPolicy(
                            POLICY_REJECT_METERED_BACKGROUND);
                    final int currentUserId = ActivityManager.getCurrentUser();
                    for (int uid : restrictedUids) {
                        // Only reset for current user
                        if (UserHandle.getUserId(uid) == currentUserId) {
                            if (DEBUG) Log.v(TAG, "Clearing data policy: " + uid);
                            mNpm.setUidPolicy(uid, POLICY_NONE);
                        }
                    }
                    mHandler.post(new Runnable() {
                        @Override public void run() {
                            if (DEBUG) Log.v(TAG, "Done clearing");
                            if (getActivity() != null && mActivityResumed) {
                                if (DEBUG) Log.v(TAG, "Updating UI!");

                            }
                        }
                    });
                    return null;
                }
            }).execute();
        }
    }

    @Override
    public void onRunningStateChanged(boolean running) {
        // No-op.
+21 −0
Original line number Diff line number Diff line
@@ -349,6 +349,27 @@ public class ApplicationsState {
        }
    };

    public static class CompoundFilter implements AppFilter {
        private final AppFilter mFirstFilter;
        private final AppFilter mSecondFilter;

        public CompoundFilter(AppFilter first, AppFilter second) {
            mFirstFilter = first;
            mSecondFilter = second;
        }

        @Override
        public void init() {
            mFirstFilter.init();
            mSecondFilter.init();
        }

        @Override
        public boolean filterApp(AppEntry info) {
            return mFirstFilter.filterApp(info) && mSecondFilter.filterApp(info);
        }
    }

    final Context mContext;
    final PackageManager mPm;
    final IPackageManager mIpm;
Loading