diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2017-02-28 15:14:58 -0800 |
---|---|---|
committer | Sunny Goyal <sunnygoyal@google.com> | 2017-03-01 17:17:40 -0800 |
commit | ad2e91a216edae0f25bce83a2b058c81953981af (patch) | |
tree | 0c72c0934aff0c23789d124998ea8534ac9d756a /src/com/android/launcher3/compat/LauncherAppsCompatVL.java | |
parent | cf18c3c2d14b54896e51fec829ae2d89642a59eb (diff) | |
download | android_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.java | 26 |
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 |