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

Commit 4fa99fe6 authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge "Remove all apps page"

parents 407e483f 6ef27230
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