Loading src/com/android/packageinstaller/permission/model/PermissionApps.java +11 −10 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.AsyncTask; import android.os.UserHandle; import android.os.UserManager; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.SparseArray; Loading Loading @@ -79,13 +80,13 @@ public class PermissionApps { new PermissionAppsLoader().execute(); } public int getGrantedCount() { public int getGrantedCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { if (!Utils.shouldShowPermission(app)) { continue; } if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading @@ -96,13 +97,13 @@ public class PermissionApps { return count; } public int getTotalCount() { public int getTotalCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { if (!Utils.shouldShowPermission(app)) { continue; } if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading Loading @@ -175,7 +176,7 @@ public class PermissionApps { : app.applicationInfo.loadLabel(mPm).toString(); PermissionApp permApp = new PermissionApp(app.packageName, group, label, getBadgedIcon(app.applicationInfo), app.applicationInfo.isSystemApp()); app.applicationInfo); permApps.add(permApp); } Loading Loading @@ -268,19 +269,19 @@ public class PermissionApps { private final AppPermissionGroup mAppPermissionGroup; private final String mLabel; private final Drawable mIcon; private final boolean mSystem; private final ApplicationInfo mInfo; public PermissionApp(String packageName, AppPermissionGroup appPermissionGroup, String label, Drawable icon, boolean isSystem) { String label, Drawable icon, ApplicationInfo info) { mPackageName = packageName; mAppPermissionGroup = appPermissionGroup; mLabel = label; mIcon = icon; mSystem = isSystem; mInfo = info; } public boolean isSystem() { return mSystem; public ApplicationInfo getAppInfo() { return mInfo; } public String getKey() { Loading src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.util.ArraySet; import android.util.SparseArray; import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp; Loading Loading @@ -105,6 +106,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver { } public boolean getAppsWithPermissionsCount(Context context, int[] counts) { ArraySet<String> launcherPkgs = Utils.getLauncherPackages(context); // Indexed by uid. SparseArray<Boolean> grantedApps = new SparseArray<>(); SparseArray<Boolean> allApps = new SparseArray<>(); Loading @@ -114,7 +116,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver { permissionApps.loadNowWithoutUi(); for (PermissionApp app : permissionApps.getApps()) { int uid = app.getUid(); if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.util.ArraySet; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; Loading @@ -47,6 +48,8 @@ public final class ManagePermissionsFragment extends PreferenceFragment private static final String EXTRA_PREFS_KEY = "extra_prefs_key"; private ArraySet<String> mLauncherPkgs; private PermissionGroups mPermissions; private PreferenceScreen mExtraScreen; Loading @@ -65,6 +68,7 @@ public final class ManagePermissionsFragment extends PreferenceFragment if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } mLauncherPkgs = Utils.getLauncherPackages(getContext()); mPermissions = new PermissionGroups(getActivity(), getLoaderManager(), this); } Loading Loading @@ -187,8 +191,8 @@ public final class ManagePermissionsFragment extends PreferenceFragment if (getActivity() == null) { return; } int granted = permissionApps.getGrantedCount(); int total = permissionApps.getTotalCount(); int granted = permissionApps.getGrantedCount(mLauncherPkgs); int total = permissionApps.getTotalCount(mLauncherPkgs); finalPref.setSummary(getString(R.string.app_permissions_group_summary, granted, total)); } Loading src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +4 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.support.v4.util.ArrayMap; import android.util.ArraySet; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; Loading Loading @@ -68,6 +69,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements private PermissionApps mPermissionApps; private ArrayMap<String, AppPermissionGroup> mToggledGroups; private ArraySet<String> mLauncherPkgs; private boolean mHasConfirmedRevoke; private boolean mShowSystem; Loading @@ -82,6 +84,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } mLauncherPkgs = Utils.getLauncherPackages(getContext()); } @Override Loading Loading @@ -189,7 +192,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements } SwitchPreference pref = (SwitchPreference) findPreference(app.getKey()); if (!mShowSystem && app.isSystem()) { if (!mShowSystem && Utils.isSystem(app, mLauncherPkgs)) { if (pref != null) { preferences.removePreference(pref); } Loading src/com/android/packageinstaller/permission/utils/Utils.java +23 −0 Original line number Diff line number Diff line Loading @@ -18,10 +18,14 @@ package com.android.packageinstaller.permission.utils; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.drawable.Drawable; import android.util.ArraySet; import android.util.Log; import android.util.TypedValue; Loading @@ -46,6 +50,9 @@ public class Utils { Manifest.permission_group.STORAGE }; private static final Intent LAUNCHER_INTENT = new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_LAUNCHER); private Utils() { /* do nothing - hide constructor */ } Loading Loading @@ -115,4 +122,20 @@ public class Utils { icon.setTint(context.getColor(typedValue.resourceId)); return icon; } public static ArraySet<String> getLauncherPackages(Context context) { ArraySet<String> launcherPkgs = new ArraySet<>(); for (ResolveInfo info : context.getPackageManager().queryIntentActivities(LAUNCHER_INTENT, 0)) { launcherPkgs.add(info.activityInfo.packageName); } return launcherPkgs; } public static boolean isSystem(PermissionApp app, ArraySet<String> launcherPkgs) { ApplicationInfo info = app.getAppInfo(); return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0 && !launcherPkgs.contains(info.packageName); } } Loading
src/com/android/packageinstaller/permission/model/PermissionApps.java +11 −10 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.os.AsyncTask; import android.os.UserHandle; import android.os.UserManager; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.SparseArray; Loading Loading @@ -79,13 +80,13 @@ public class PermissionApps { new PermissionAppsLoader().execute(); } public int getGrantedCount() { public int getGrantedCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { if (!Utils.shouldShowPermission(app)) { continue; } if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading @@ -96,13 +97,13 @@ public class PermissionApps { return count; } public int getTotalCount() { public int getTotalCount(ArraySet<String> launcherPkgs) { int count = 0; for (PermissionApp app : mPermApps) { if (!Utils.shouldShowPermission(app)) { continue; } if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading Loading @@ -175,7 +176,7 @@ public class PermissionApps { : app.applicationInfo.loadLabel(mPm).toString(); PermissionApp permApp = new PermissionApp(app.packageName, group, label, getBadgedIcon(app.applicationInfo), app.applicationInfo.isSystemApp()); app.applicationInfo); permApps.add(permApp); } Loading Loading @@ -268,19 +269,19 @@ public class PermissionApps { private final AppPermissionGroup mAppPermissionGroup; private final String mLabel; private final Drawable mIcon; private final boolean mSystem; private final ApplicationInfo mInfo; public PermissionApp(String packageName, AppPermissionGroup appPermissionGroup, String label, Drawable icon, boolean isSystem) { String label, Drawable icon, ApplicationInfo info) { mPackageName = packageName; mAppPermissionGroup = appPermissionGroup; mLabel = label; mIcon = icon; mSystem = isSystem; mInfo = info; } public boolean isSystem() { return mSystem; public ApplicationInfo getAppInfo() { return mInfo; } public String getKey() { Loading
src/com/android/packageinstaller/permission/model/PermissionStatusReceiver.java +3 −1 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.util.ArraySet; import android.util.SparseArray; import com.android.packageinstaller.permission.model.PermissionApps.PermissionApp; Loading Loading @@ -105,6 +106,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver { } public boolean getAppsWithPermissionsCount(Context context, int[] counts) { ArraySet<String> launcherPkgs = Utils.getLauncherPackages(context); // Indexed by uid. SparseArray<Boolean> grantedApps = new SparseArray<>(); SparseArray<Boolean> allApps = new SparseArray<>(); Loading @@ -114,7 +116,7 @@ public class PermissionStatusReceiver extends BroadcastReceiver { permissionApps.loadNowWithoutUi(); for (PermissionApp app : permissionApps.getApps()) { int uid = app.getUid(); if (app.isSystem()) { if (Utils.isSystem(app, launcherPkgs)) { // We default to not showing system apps, so hide them from count. continue; } Loading
src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java +6 −2 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.preference.Preference; import android.preference.Preference.OnPreferenceClickListener; import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.util.ArraySet; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; Loading @@ -47,6 +48,8 @@ public final class ManagePermissionsFragment extends PreferenceFragment private static final String EXTRA_PREFS_KEY = "extra_prefs_key"; private ArraySet<String> mLauncherPkgs; private PermissionGroups mPermissions; private PreferenceScreen mExtraScreen; Loading @@ -65,6 +68,7 @@ public final class ManagePermissionsFragment extends PreferenceFragment if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } mLauncherPkgs = Utils.getLauncherPackages(getContext()); mPermissions = new PermissionGroups(getActivity(), getLoaderManager(), this); } Loading Loading @@ -187,8 +191,8 @@ public final class ManagePermissionsFragment extends PreferenceFragment if (getActivity() == null) { return; } int granted = permissionApps.getGrantedCount(); int total = permissionApps.getTotalCount(); int granted = permissionApps.getGrantedCount(mLauncherPkgs); int total = permissionApps.getTotalCount(mLauncherPkgs); finalPref.setSummary(getString(R.string.app_permissions_group_summary, granted, total)); } Loading
src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +4 −1 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import android.preference.PreferenceFragment; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.support.v4.util.ArrayMap; import android.util.ArraySet; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; Loading Loading @@ -68,6 +69,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements private PermissionApps mPermissionApps; private ArrayMap<String, AppPermissionGroup> mToggledGroups; private ArraySet<String> mLauncherPkgs; private boolean mHasConfirmedRevoke; private boolean mShowSystem; Loading @@ -82,6 +84,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements if (ab != null) { ab.setDisplayHomeAsUpEnabled(true); } mLauncherPkgs = Utils.getLauncherPackages(getContext()); } @Override Loading Loading @@ -189,7 +192,7 @@ public final class PermissionAppsFragment extends PreferenceFragment implements } SwitchPreference pref = (SwitchPreference) findPreference(app.getKey()); if (!mShowSystem && app.isSystem()) { if (!mShowSystem && Utils.isSystem(app, mLauncherPkgs)) { if (pref != null) { preferences.removePreference(pref); } Loading
src/com/android/packageinstaller/permission/utils/Utils.java +23 −0 Original line number Diff line number Diff line Loading @@ -18,10 +18,14 @@ package com.android.packageinstaller.permission.utils; import android.Manifest; import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.content.res.Resources.Theme; import android.graphics.drawable.Drawable; import android.util.ArraySet; import android.util.Log; import android.util.TypedValue; Loading @@ -46,6 +50,9 @@ public class Utils { Manifest.permission_group.STORAGE }; private static final Intent LAUNCHER_INTENT = new Intent(Intent.ACTION_MAIN, null) .addCategory(Intent.CATEGORY_LAUNCHER); private Utils() { /* do nothing - hide constructor */ } Loading Loading @@ -115,4 +122,20 @@ public class Utils { icon.setTint(context.getColor(typedValue.resourceId)); return icon; } public static ArraySet<String> getLauncherPackages(Context context) { ArraySet<String> launcherPkgs = new ArraySet<>(); for (ResolveInfo info : context.getPackageManager().queryIntentActivities(LAUNCHER_INTENT, 0)) { launcherPkgs.add(info.activityInfo.packageName); } return launcherPkgs; } public static boolean isSystem(PermissionApp app, ArraySet<String> launcherPkgs) { ApplicationInfo info = app.getAppInfo(); return info.isSystemApp() && (info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0 && !launcherPkgs.contains(info.packageName); } }