diff options
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/appwidget/AppWidgetHostView.java | 9 | ||||
| -rw-r--r-- | core/java/android/content/pm/LauncherApps.java | 17 |
5 files changed, 24 insertions, 8 deletions
diff --git a/api/current.txt b/api/current.txt index b9da04c351fc..4bbccb810d15 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10341,7 +10341,7 @@ package android.content.pm { public class LauncherApps { method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle); - method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle); + method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent); method public java.util.List<android.os.UserHandle> getProfiles(); method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int); diff --git a/api/system-current.txt b/api/system-current.txt index aafbcde154da..1f1e74aa7d54 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -11004,7 +11004,7 @@ package android.content.pm { public class LauncherApps { method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle); - method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle); + method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent); method public java.util.List<android.os.UserHandle> getProfiles(); method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int); diff --git a/api/test-current.txt b/api/test-current.txt index 861046750431..d0b24972590f 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -10378,7 +10378,7 @@ package android.content.pm { public class LauncherApps { ctor public LauncherApps(android.content.Context); method public java.util.List<android.content.pm.LauncherActivityInfo> getActivityList(java.lang.String, android.os.UserHandle); - method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle); + method public android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int, android.os.UserHandle) throws android.content.pm.PackageManager.NameNotFoundException; method public android.content.pm.LauncherApps.PinItemRequest getPinItemRequest(android.content.Intent); method public java.util.List<android.os.UserHandle> getProfiles(); method public android.graphics.drawable.Drawable getShortcutBadgedIconDrawable(android.content.pm.ShortcutInfo, int); diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index ef3b1c50ffd3..624ec871a15a 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -498,8 +498,13 @@ public class AppWidgetHostView extends FrameLayout { private void updateContentDescription(AppWidgetProviderInfo info) { if (info != null) { LauncherApps launcherApps = getContext().getSystemService(LauncherApps.class); - ApplicationInfo appInfo = launcherApps.getApplicationInfo( - info.provider.getPackageName(), 0, info.getProfile()); + ApplicationInfo appInfo = null; + try { + appInfo = launcherApps.getApplicationInfo( + info.provider.getPackageName(), 0, info.getProfile()); + } catch (NameNotFoundException e) { + // ignore -- use null. + } if (appInfo != null && (appInfo.flags & ApplicationInfo.FLAG_SUSPENDED) != 0) { setContentDescription( diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index c3bdde51af0f..5541d3c6a15d 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -52,6 +52,8 @@ import android.os.UserManager; import android.util.DisplayMetrics; import android.util.Log; +import com.android.internal.util.Preconditions; + import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -612,11 +614,20 @@ public class LauncherApps { * null if the package isn't installed for the given user, or the target user * is not enabled. */ - public ApplicationInfo getApplicationInfo(String packageName, @ApplicationInfoFlags int flags, - UserHandle user) { + public ApplicationInfo getApplicationInfo(@NonNull String packageName, + @ApplicationInfoFlags int flags, @NonNull UserHandle user) + throws PackageManager.NameNotFoundException { + Preconditions.checkNotNull(packageName, "packageName"); + Preconditions.checkNotNull(packageName, "user"); logErrorForInvalidProfileAccess(user); try { - return mService.getApplicationInfo(mContext.getPackageName(), packageName, flags, user); + final ApplicationInfo ai = mService + .getApplicationInfo(mContext.getPackageName(), packageName, flags, user); + if (ai == null) { + throw new NameNotFoundException("Package " + packageName + " not found for user " + + user.getIdentifier()); + } + return ai; } catch (RemoteException re) { throw re.rethrowFromSystemServer(); } |