summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2017-02-28 15:14:58 -0800
committerSunny Goyal <sunnygoyal@google.com>2017-03-01 17:17:40 -0800
commitad2e91a216edae0f25bce83a2b058c81953981af (patch)
tree0c72c0934aff0c23789d124998ea8534ac9d756a /src/com/android/launcher3/compat/LauncherAppsCompatVL.java
parentcf18c3c2d14b54896e51fec829ae2d89642a59eb (diff)
downloadandroid_packages_apps_Trebuchet-ad2e91a216edae0f25bce83a2b058c81953981af.tar.gz
android_packages_apps_Trebuchet-ad2e91a216edae0f25bce83a2b058c81953981af.tar.bz2
android_packages_apps_Trebuchet-ad2e91a216edae0f25bce83a2b058c81953981af.zip
Fixing SDCard and package enabled state checks in PackageManagerHeler
Bug: 32365540 Change-Id: Iaac3e08ce55457ebbfb3633514ebc8ade6d200c5
Diffstat (limited to 'src/com/android/launcher3/compat/LauncherAppsCompatVL.java')
-rw-r--r--src/com/android/launcher3/compat/LauncherAppsCompatVL.java26
1 files changed, 23 insertions, 3 deletions
diff --git a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
index 776f59360..e5517a6c6 100644
--- a/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
+++ b/src/com/android/launcher3/compat/LauncherAppsCompatVL.java
@@ -27,6 +27,7 @@ import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
import android.graphics.Rect;
import android.os.Bundle;
+import android.os.Process;
import android.os.UserHandle;
import com.android.launcher3.compat.ShortcutConfigActivityInfo.ShortcutConfigActivityInfoVL;
@@ -66,9 +67,28 @@ public class LauncherAppsCompatVL extends LauncherAppsCompat {
}
@Override
- public ApplicationInfo getApplicationInfo(String packageName, UserHandle user) {
- List<LauncherActivityInfo> activityList = mLauncherApps.getActivityList(packageName, user);
- return activityList.size() > 0 ? activityList.get(0).getApplicationInfo() : null;
+ public ApplicationInfo getApplicationInfo(String packageName, int flags, UserHandle user) {
+ final boolean isPrimaryUser = Process.myUserHandle().equals(user);
+ if (!isPrimaryUser && (flags == 0)) {
+ // We are looking for an installed app on a secondary profile. Prior to O, the only
+ // entry point for work profiles is through the LauncherActivity.
+ List<LauncherActivityInfo> activityList =
+ mLauncherApps.getActivityList(packageName, user);
+ return activityList.size() > 0 ? activityList.get(0).getApplicationInfo() : null;
+ }
+ try {
+ ApplicationInfo info =
+ mContext.getPackageManager().getApplicationInfo(packageName, flags);
+ // There is no way to check if the app is installed for managed profile. But for
+ // primary profile, we can still have this check.
+ if (isPrimaryUser && ((info.flags & ApplicationInfo.FLAG_INSTALLED) == 0)) {
+ return null;
+ }
+ return info;
+ } catch (PackageManager.NameNotFoundException e) {
+ // Package not found
+ return null;
+ }
}
@Override