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 | |
parent | c511bee49809773d1a7b920525199282d7436b49 (diff) | |
download | packages_apps_packageinstaller-ff8693ab50a9ed78ee816361c628969752127e9d.zip packages_apps_packageinstaller-ff8693ab50a9ed78ee816361c628969752127e9d.tar.gz packages_apps_packageinstaller-ff8693ab50a9ed78ee816361c628969752127e9d.tar.bz2 |
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')
7 files changed, 72 insertions, 32 deletions
diff --git a/src/com/android/packageinstaller/InstallAppConfirmation.java b/src/com/android/packageinstaller/InstallAppConfirmation.java index fe7126b..5a65e56 100755 --- a/src/com/android/packageinstaller/InstallAppConfirmation.java +++ b/src/com/android/packageinstaller/InstallAppConfirmation.java @@ -77,7 +77,7 @@ public class InstallAppConfirmation extends Activity implements View.OnClickList mContentView = inflater.inflate(R.layout.install_confirm, null); setContentView(mContentView); //initialize views - PackageUtil.initAppSnippet(this, mAppInfo, R.id.app_snippet); + PackageUtil.initSnippetForNewApp(this, mAppInfo, R.id.app_snippet, mPkgURI); if(desc != null) { ((TextView)findViewById(R.id.security_settings_desc)).setText(desc); } diff --git a/src/com/android/packageinstaller/InstallAppDone.java b/src/com/android/packageinstaller/InstallAppDone.java index 141517a..36bd7e0 100755 --- a/src/com/android/packageinstaller/InstallAppDone.java +++ b/src/com/android/packageinstaller/InstallAppDone.java @@ -23,6 +23,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.Rect; import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Bundle; import android.util.Log; import android.view.View; @@ -42,6 +43,7 @@ public class InstallAppDone extends Activity implements View.OnClickListener { private final String TAG="InstallAppDone"; private boolean localLOGV = false; private ApplicationInfo mAppInfo; + private Uri mPkgURI; private Button mDoneButton; private Button mLaunchButton; private boolean installFlag; @@ -52,6 +54,7 @@ public class InstallAppDone extends Activity implements View.OnClickListener { super.onCreate(icicle); Intent intent = getIntent(); mAppInfo = intent.getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO); + mPkgURI = intent.getData(); installFlag = intent.getBooleanExtra(PackageUtil.INTENT_ATTR_INSTALL_STATUS, true); if(localLOGV) Log.i(TAG, "installFlag="+installFlag); initView(); @@ -62,7 +65,7 @@ public class InstallAppDone extends Activity implements View.OnClickListener { String unknown = getString(R.string.unknown); setContentView(R.layout.install_done); // Initialize views - PackageUtil.initAppSnippet(this, mAppInfo, R.id.app_snippet); + PackageUtil.initSnippetForInstalledApp(this, mAppInfo, R.id.app_snippet); TextView centerText = (TextView)findViewById(R.id.center_text); mDoneButton = (Button)findViewById(R.id.done_button); mLaunchButton = (Button)findViewById(R.id.launch_button); diff --git a/src/com/android/packageinstaller/InstallAppProgress.java b/src/com/android/packageinstaller/InstallAppProgress.java index 5b92d09..28abd3c 100755 --- a/src/com/android/packageinstaller/InstallAppProgress.java +++ b/src/com/android/packageinstaller/InstallAppProgress.java @@ -89,7 +89,7 @@ public class InstallAppProgress extends Activity { String unknown = getString(R.string.unknown); setContentView(R.layout.op_progress); //initialize views - PackageUtil.initAppSnippet(this, mAppInfo, R.id.app_snippet); + PackageUtil.initSnippetForNewApp(this, mAppInfo, R.id.app_snippet, mPackageURI); TextView installTextView = (TextView)findViewById(R.id.center_text); installTextView.setText(R.string.installing); mProgressBar = (ProgressBar) findViewById(R.id.progress_bar); diff --git a/src/com/android/packageinstaller/PackageInstallerActivity.java b/src/com/android/packageinstaller/PackageInstallerActivity.java index 613432c..2d0094d 100644 --- a/src/com/android/packageinstaller/PackageInstallerActivity.java +++ b/src/com/android/packageinstaller/PackageInstallerActivity.java @@ -353,7 +353,8 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen //set view requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.install_start); - PackageUtil.initAppSnippet(this, mPkgInfo.applicationInfo, R.id.app_snippet); + PackageUtil.initSnippetForNewApp(this, mPkgInfo.applicationInfo, + R.id.app_snippet, mPackageURI); //check setting if(!isInstallingUnknownAppsAllowed()) { //ask user to enable setting first diff --git a/src/com/android/packageinstaller/PackageUtil.java b/src/com/android/packageinstaller/PackageUtil.java index b36bcf2..362c963 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); diff --git a/src/com/android/packageinstaller/UninstallAppProgress.java b/src/com/android/packageinstaller/UninstallAppProgress.java index 6b30118..6be099d 100755 --- a/src/com/android/packageinstaller/UninstallAppProgress.java +++ b/src/com/android/packageinstaller/UninstallAppProgress.java @@ -79,8 +79,8 @@ public class UninstallAppProgress extends Activity { public void initView() { requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.op_progress); - //initialize views - PackageUtil.initAppSnippet(this, mAppInfo, R.id.app_snippet); + // Initialize views + PackageUtil.initSnippetForInstalledApp(this, mAppInfo, R.id.app_snippet); TextView installTextView = (TextView)findViewById(R.id.center_text); installTextView.setText(R.string.uninstalling); final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progress_bar); diff --git a/src/com/android/packageinstaller/UninstallerActivity.java b/src/com/android/packageinstaller/UninstallerActivity.java index f22cc28..0065824 100755 --- a/src/com/android/packageinstaller/UninstallerActivity.java +++ b/src/com/android/packageinstaller/UninstallerActivity.java @@ -138,7 +138,7 @@ public class UninstallerActivity extends Activity implements OnClickListener { requestWindowFeature(Window.FEATURE_NO_TITLE); //set view setContentView(R.layout.uninstall_confirm); - PackageUtil.initAppSnippet(this, mAppInfo, R.id.app_snippet); + PackageUtil.initSnippetForInstalledApp(this, mAppInfo, R.id.app_snippet); //initialize ui elements mOk = (Button)findViewById(R.id.ok_button); mCancel = (Button)findViewById(R.id.cancel_button); |