diff options
author | Suchi Amalapurapu <asuchitra@google.com> | 2009-05-12 13:31:57 -0700 |
---|---|---|
committer | Suchi Amalapurapu <asuchitra@google.com> | 2009-06-10 11:36:04 -0700 |
commit | ff8693ab50a9ed78ee816361c628969752127e9d (patch) | |
tree | 9c33df00873d3d7144825869bcb0ad951b9079c2 /src/com/android/packageinstaller/PackageUtil.java | |
parent | c511bee49809773d1a7b920525199282d7436b49 (diff) | |
download | android_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.java | 86 |
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); |