summaryrefslogtreecommitdiffstats
path: root/core/java/android/content/pm/PackageItemInfo.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/java/android/content/pm/PackageItemInfo.java')
-rw-r--r--core/java/android/content/pm/PackageItemInfo.java38
1 files changed, 33 insertions, 5 deletions
diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java
index d666263..14c0680 100644
--- a/core/java/android/content/pm/PackageItemInfo.java
+++ b/core/java/android/content/pm/PackageItemInfo.java
@@ -103,7 +103,7 @@ public class PackageItemInfo {
return nonLocalizedLabel;
}
if (labelRes != 0) {
- CharSequence label = pm.getText(packageName, labelRes, null);
+ CharSequence label = pm.getText(packageName, labelRes, getApplicationInfo());
if (label != null) {
return label.toString().trim();
}
@@ -123,15 +123,31 @@ public class PackageItemInfo {
* the PackageManager from which you originally retrieved this item.
*
* @return Returns a Drawable containing the item's icon. If the
- * item does not have an icon, the default activity icon is returned.
+ * item does not have an icon, the item's default icon is returned
+ * such as the default activity icon.
*/
public Drawable loadIcon(PackageManager pm) {
if (icon != 0) {
- Drawable dr = pm.getDrawable(packageName, icon, null);
+ Drawable dr = pm.getDrawable(packageName, icon, getApplicationInfo());
if (dr != null) {
return dr;
}
}
+ return loadDefaultIcon(pm);
+ }
+
+ /**
+ * Retrieve the default graphical icon associated with this item.
+ *
+ * @param pm A PackageManager from which the icon can be loaded; usually
+ * the PackageManager from which you originally retrieved this item.
+ *
+ * @return Returns a Drawable containing the item's default icon
+ * such as the default activity icon.
+ *
+ * @hide
+ */
+ protected Drawable loadDefaultIcon(PackageManager pm) {
return pm.getDefaultActivityIcon();
}
@@ -152,7 +168,7 @@ public class PackageItemInfo {
if (metaData != null) {
int resid = metaData.getInt(name);
if (resid != 0) {
- return pm.getXml(packageName, resid, null);
+ return pm.getXml(packageName, resid, getApplicationInfo());
}
}
return null;
@@ -182,7 +198,7 @@ public class PackageItemInfo {
dest.writeInt(icon);
dest.writeBundle(metaData);
}
-
+
protected PackageItemInfo(Parcel source) {
name = source.readString();
packageName = source.readString();
@@ -193,6 +209,18 @@ public class PackageItemInfo {
metaData = source.readBundle();
}
+ /**
+ * Get the ApplicationInfo for the application to which this item belongs,
+ * if available, otherwise returns null.
+ *
+ * @return Returns the ApplicationInfo of this item, or null if not known.
+ *
+ * @hide
+ */
+ protected ApplicationInfo getApplicationInfo() {
+ return null;
+ }
+
public static class DisplayNameComparator
implements Comparator<PackageItemInfo> {
public DisplayNameComparator(PackageManager pm) {