diff options
author | Jeff Brown <jeffbrown@google.com> | 2010-03-30 19:57:08 -0700 |
---|---|---|
committer | Jeff Brown <jeffbrown@google.com> | 2010-03-30 22:20:42 -0700 |
commit | 07330791116513710d879c45b2f095cd314cbfd0 (patch) | |
tree | de0b74c79d4302c7a111fd4415426b1ce794502a /core/java/android/content/pm/ApplicationInfo.java | |
parent | 966fcb81eece9096040ccc185bb662335d3964cf (diff) | |
download | frameworks_base-07330791116513710d879c45b2f095cd314cbfd0.zip frameworks_base-07330791116513710d879c45b2f095cd314cbfd0.tar.gz frameworks_base-07330791116513710d879c45b2f095cd314cbfd0.tar.bz2 |
Show SD unavailable icon for apps on SD when ejected.
This change include a minor refactoring of PackageItemInfo and related
classes to eliminate code duplication and to avoid redundant work
searching for an ApplicationInfo instance we already have.
Bug: b/2537578
Change-Id: Id0794c3f055ea58b943028f7a84abc7dec9d0aac
Diffstat (limited to 'core/java/android/content/pm/ApplicationInfo.java')
-rw-r--r-- | core/java/android/content/pm/ApplicationInfo.java | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 480504d..0a04e5b 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -16,6 +16,9 @@ package android.content.pm; +import android.content.pm.PackageManager.NameNotFoundException; +import android.content.res.Resources; +import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; import android.util.Printer; @@ -496,7 +499,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public CharSequence loadDescription(PackageManager pm) { if (descriptionRes != 0) { - CharSequence label = pm.getText(packageName, descriptionRes, null); + CharSequence label = pm.getText(packageName, descriptionRes, this); if (label != null) { return label; } @@ -514,4 +517,31 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { FLAG_SUPPORTS_SMALL_SCREENS | FLAG_RESIZEABLE_FOR_SCREENS | FLAG_SUPPORTS_SCREEN_DENSITIES); } + + /** + * @hide + */ + @Override protected Drawable loadDefaultIcon(PackageManager pm) { + if ((flags & FLAG_EXTERNAL_STORAGE) != 0 + && isPackageUnavailable(pm)) { + return Resources.getSystem().getDrawable( + com.android.internal.R.drawable.sym_app_on_sd_unavailable_icon); + } + return pm.getDefaultActivityIcon(); + } + + private boolean isPackageUnavailable(PackageManager pm) { + try { + return pm.getPackageInfo(packageName, 0) == null; + } catch (NameNotFoundException ex) { + return true; + } + } + + /** + * @hide + */ + @Override protected ApplicationInfo getApplicationInfo() { + return this; + } } |