Loading res/menu/manage_apps.xml +21 −2 Original line number Diff line number Diff line Loading @@ -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> res/values/strings.xml +3 −7 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading res/xml/advanced_apps.xml +0 −16 Original line number Diff line number Diff line Loading @@ -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" Loading src/com/android/settings/applications/AdvancedAppSettings.java +2 −162 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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); } Loading @@ -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) { Loading @@ -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; Loading @@ -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. Loading src/com/android/settings/applications/ApplicationsState.java +21 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
res/menu/manage_apps.xml +21 −2 Original line number Diff line number Diff line Loading @@ -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>
res/values/strings.xml +3 −7 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading
res/xml/advanced_apps.xml +0 −16 Original line number Diff line number Diff line Loading @@ -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" Loading
src/com/android/settings/applications/AdvancedAppSettings.java +2 −162 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 Loading @@ -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); } Loading @@ -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) { Loading @@ -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; Loading @@ -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. Loading
src/com/android/settings/applications/ApplicationsState.java +21 −0 Original line number Diff line number Diff line Loading @@ -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