diff options
Diffstat (limited to 'src/com/android/packageinstaller/permission/utils/Utils.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/utils/Utils.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/permission/utils/Utils.java b/src/com/android/packageinstaller/permission/utils/Utils.java index 7600f6c5..63114f13 100644 --- a/src/com/android/packageinstaller/permission/utils/Utils.java +++ b/src/com/android/packageinstaller/permission/utils/Utils.java @@ -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; @@ -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 */ } @@ -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); + } } |