summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/PackageUtil.java
diff options
context:
space:
mode:
authorSuchi Amalapurapu <asuchitra@google.com>2009-05-12 13:31:57 -0700
committerSuchi Amalapurapu <asuchitra@google.com>2009-06-10 11:36:04 -0700
commitff8693ab50a9ed78ee816361c628969752127e9d (patch)
tree9c33df00873d3d7144825869bcb0ad951b9079c2 /src/com/android/packageinstaller/PackageUtil.java
parentc511bee49809773d1a7b920525199282d7436b49 (diff)
downloadandroid_packages_apps_PackageInstaller-ff8693ab50a9ed78ee816361c628969752127e9d.tar.gz
android_packages_apps_PackageInstaller-ff8693ab50a9ed78ee816361c628969752127e9d.tar.bz2
android_packages_apps_PackageInstaller-ff8693ab50a9ed78ee816361c628969752127e9d.zip
change utility methods used to load label and icon of packages
load label and icon for yet to be installed app from assets and resources created from the apk. define new method for initing app snippet for uninstall related code rename changed utility methods in install and uninstall code paths
Diffstat (limited to 'src/com/android/packageinstaller/PackageUtil.java')
-rw-r--r--src/com/android/packageinstaller/PackageUtil.java86
1 files changed, 61 insertions, 25 deletions
diff --git a/src/com/android/packageinstaller/PackageUtil.java b/src/com/android/packageinstaller/PackageUtil.java
index b36bcf2b..362c9636 100644
--- a/src/com/android/packageinstaller/PackageUtil.java
+++ b/src/com/android/packageinstaller/PackageUtil.java
@@ -27,9 +27,14 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageParser;
import android.content.pm.ResolveInfo;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.res.AssetManager;
+import android.content.res.Configuration;
+import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.DisplayMetrics;
+import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -73,38 +78,69 @@ public class PackageUtil {
metrics.setToDefaults();
return packageParser.parsePackage(sourceFile, archiveFilePath, metrics, 0);
}
-
- /*
- * Utility method to get application label from package manager for a given context
- */
- public static CharSequence getApplicationLabel(Context context, ApplicationInfo appInfo) {
- CharSequence appName = appInfo.loadLabel(context.getPackageManager());
- if(appName == null) {
- appName = context.getString(R.string.unknown);
- }
- return appName;
- }
-
+
/*
- * Utility method to getApplicationIcon from package manager for a given context
+ * Utility method to display application snippet of an installed application.
+ * The content view should have been set on context before invoking this method.
+ * appSnippet view should include R.id.app_icon and R.id.app_name
+ * defined on it.
+ *
+ * @param pContext context of package that can load the resources
+ * @param appInfo ApplicationInfo object of package whose resources are to be loaded
+ * @param snippetId view id of app snippet view
*/
- public static Drawable getApplicationIcon(Context context, ApplicationInfo appInfo) {
- return appInfo.loadIcon(context.getPackageManager());
+ public static View initSnippetForInstalledApp(Activity pContext,
+ ApplicationInfo appInfo, int snippetId) {
+ View appSnippet = pContext.findViewById(snippetId);
+ String pkgName = appInfo.packageName;
+ PackageManager pm = pContext.getPackageManager();
+ CharSequence label = appInfo.loadLabel(pm);
+ Drawable icon = appInfo.loadIcon(pm);
+ ((ImageView)appSnippet.findViewById(R.id.app_icon)).setImageDrawable(icon);
+ ((TextView)appSnippet.findViewById(R.id.app_name)).setText(label);
+ return appSnippet;
}
-
+
/*
- * Utility method to display application snippet. make sure to setContentView on context
- * before invoking this method
+ * Utility method to display application snippet of a new package.
+ * The content view should have been set on context before invoking this method.
+ * appSnippet view should include R.id.app_icon and R.id.app_name
+ * defined on it.
+ *
+ * @param pContext context of package that can load the resources
+ * @param appInfo ApplicationInfo object of package whose resources are to be loaded
+ * @param snippetId view id of app snippet view
*/
- public static View initAppSnippet(Activity context, ApplicationInfo appInfo, int snippetId) {
- View appSnippet = context.findViewById(snippetId);
- ((ImageView)appSnippet.findViewById(R.id.app_icon)).setImageDrawable(
- getApplicationIcon(context, appInfo));
- ((TextView)appSnippet.findViewById(R.id.app_name)).setText(
- getApplicationLabel(context, appInfo));
+ public static View initSnippetForNewApp(Activity pContext, ApplicationInfo appInfo,
+ int snippetId, Uri packageURI) {
+ View appSnippet = pContext.findViewById(snippetId);
+ final String archiveFilePath = packageURI.getPath();
+ DisplayMetrics metrics = new DisplayMetrics();
+ metrics.setToDefaults();
+ AssetManager assmgr = new AssetManager();
+ assmgr.addAssetPath(archiveFilePath);
+ Resources res = new Resources(assmgr, metrics, null);
+ CharSequence label = null;
+ // Try to load the label from the package's resources. If an app has not explicitly
+ // specified any label, just use the package name.
+ try {
+ label = res.getText(appInfo.labelRes);
+ } catch (Resources.NotFoundException e) {
+ label = appInfo.packageName;
+ }
+ Drawable icon = null;
+ // Try to load the icon from the package's resources. If an app has not explicitly
+ // specified any resource, just use the default icon for now.
+ try {
+ icon = res.getDrawable(appInfo.icon);
+ } catch (Resources.NotFoundException e) {
+ icon = pContext.getPackageManager().getDefaultActivityIcon();
+ }
+ ((ImageView)appSnippet.findViewById(R.id.app_icon)).setImageDrawable(icon);
+ ((TextView)appSnippet.findViewById(R.id.app_name)).setText(label);
return appSnippet;
}
-
+
public static boolean isPackageAlreadyInstalled(Activity context, String pkgName) {
List<PackageInfo> installedList = context.getPackageManager().getInstalledPackages(
PackageManager.GET_UNINSTALLED_PACKAGES);