diff options
Diffstat (limited to 'src')
3 files changed, 56 insertions, 2 deletions
diff --git a/src/com/android/packageinstaller/permission/model/PermissionApps.java b/src/com/android/packageinstaller/permission/model/PermissionApps.java index 06ef7981..1aadeb2c 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionApps.java +++ b/src/com/android/packageinstaller/permission/model/PermissionApps.java @@ -85,6 +85,10 @@ public class PermissionApps { if (!Utils.shouldShowPermission(app)) { continue; } + if (app.isSystem()) { + // We default to not showing system apps, so hide them from count. + continue; + } if (app.areRuntimePermissionsGranted()) { count++; } @@ -98,6 +102,10 @@ public class PermissionApps { if (!Utils.shouldShowPermission(app)) { continue; } + if (app.isSystem()) { + // We default to not showing system apps, so hide them from count. + continue; + } count++; } return count; @@ -166,7 +174,8 @@ public class PermissionApps { String label = mSkipUi ? app.packageName : app.applicationInfo.loadLabel(mPm).toString(); PermissionApp permApp = new PermissionApp(app.packageName, - group, label, getBadgedIcon(app.applicationInfo)); + group, label, getBadgedIcon(app.applicationInfo), + app.applicationInfo.isSystemApp()); permApps.add(permApp); } @@ -259,13 +268,19 @@ public class PermissionApps { private final AppPermissionGroup mAppPermissionGroup; private final String mLabel; private final Drawable mIcon; + private final boolean mSystem; public PermissionApp(String packageName, AppPermissionGroup appPermissionGroup, - String label, Drawable icon) { + String label, Drawable icon, boolean isSystem) { mPackageName = packageName; mAppPermissionGroup = appPermissionGroup; mLabel = label; mIcon = icon; + mSystem = isSystem; + } + + public boolean isSystem() { + return mSystem; } public String getKey() { diff --git a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java index f84a0757..9e2bfd13 100644 --- a/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java +++ b/src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java @@ -80,6 +80,10 @@ public class PermissionStatusReceiver extends BroadcastReceiver { permissionApps.loadNowWithoutUi(); for (PermissionApp app : permissionApps.getApps()) { int uid = app.getUid(); + if (app.isSystem()) { + // We default to not showing system apps, so hide them from count. + continue; + } if (app.areRuntimePermissionsGranted()) { grantedApps.put(uid, true); } diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index 1cd8f936..7b704bfd 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -30,6 +30,8 @@ import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.support.v4.util.ArrayMap; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -50,6 +52,9 @@ import java.util.List; public final class PermissionAppsFragment extends SettingsWithHeader implements Callback, OnPreferenceChangeListener { + private static final int MENU_SHOW_SYSTEM = Menu.FIRST; + private static final int MENU_HIDE_SYSTEM = Menu.FIRST + 1; + public static PermissionAppsFragment newInstance(String permissionName) { PermissionAppsFragment instance = new PermissionAppsFragment(); Bundle arguments = new Bundle(); @@ -63,6 +68,10 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements private ArrayMap<String, AppPermissionGroup> mToggledGroups; private boolean mHasConfirmedRevoke; + private boolean mShowSystem; + private MenuItem mShowSystemMenu; + private MenuItem mHideSystemMenu; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -80,15 +89,35 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements } @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + mShowSystemMenu = menu.add(Menu.NONE, MENU_SHOW_SYSTEM, Menu.NONE, + R.string.menu_show_system); + mHideSystemMenu = menu.add(Menu.NONE, MENU_HIDE_SYSTEM, Menu.NONE, + R.string.menu_hide_system); + updateMenu(); + } + + @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: getActivity().finish(); return true; + case MENU_SHOW_SYSTEM: + case MENU_HIDE_SYSTEM: + mShowSystem = item.getItemId() == MENU_SHOW_SYSTEM; + onPermissionsLoaded(mPermissionApps); + updateMenu(); + break; } return super.onOptionsItemSelected(item); } + private void updateMenu() { + mShowSystemMenu.setVisible(!mShowSystem); + mHideSystemMenu.setVisible(mShowSystem); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -154,6 +183,12 @@ public final class PermissionAppsFragment extends SettingsWithHeader implements } SwitchPreference pref = (SwitchPreference) findPreference(app.getKey()); + if (!mShowSystem && app.isSystem()) { + if (pref != null) { + preferences.removePreference(pref); + } + continue; + } if (pref == null) { pref = new SwitchPreference(context); pref.setOnPreferenceChangeListener(this); |