Android菜鸟笔记- 获取未安装的APK图标版本号包名名称是否安装安装打开

冲天香阵透长安,满城尽带黄金甲。这篇文章主要讲述Android菜鸟笔记- 获取未安装的APK图标版本号包名名称是否安装安装打开相关的知识,希望能为你提供帮助。
周末闲来无事,把android的基础知识拿出来复习复习,今天主题是《获取未安装的APK图标、版本号、包名、名称、是否安装、跳转安装、打开》
一、获取APK图标通常读取APK的图标能够用,PackageManager里面的getApplicationIcon(ApplicationInfo)来得到一个drawable。但实际使用的时候常常仅仅能得到一个默认的图标。根本不是APK的图标。

參考小米开源文件管理器,结合实践,代码例如以下:

/* * 採用了新的办法获取APK图标。之前的失败是由于android中存在的一个BUG,通过 * appInfo.publicSourceDir = apkPath; 来修正这个问题,详情參见: * http://code.google.com/p/android/issues/detail?id=9151 */ public static Drawable getApkIcon(Context context, String apkPath) { PackageManager pm = context.getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES); if (info != null) { ApplicationInfo appInfo = info.applicationInfo; appInfo.sourceDir = apkPath; appInfo.publicSourceDir = apkPath; try { return appInfo.loadIcon(pm); } catch (OutOfMemoryError e) { Log.e("ApkIconLoader", e.toString()); } } return null; }


下面代码段中PackageManager、PackageInfo、ApplicationInfo均同上面一致。

二、获取APK名称

String label = appInfo.loadLabel(mPackManager).toString();




三、获取APK包名
String packageName = appInfo.packageName;



四、获取APK版本号
String version = info.versionName==null?
"0":info.versionName



五、推断APK是否安装

private boolean isApkInstalled(String packagename) { PackageManager localPackageManager = getPackageManager(); try { PackageInfo localPackageInfo = localPackageManager.getPackageInfo(packagename, PackageManager.GET_UNINSTALLED_PACKAGES); return true; } catch (PackageManager.NameNotFoundException localNameNotFoundException) { return false; }}




六、安装APK
private void installAPK(String apkPath) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setDataAndType(Uri.parse("file://" + apkPath), "application/vnd.android.package-archive"); mContext.startActivity(intent); }



七、打开APK

< /pre> < pre name="code" class="java"> private void openAPK(String packagename) { PackageManager packageManager = mContext.getPackageManager(); Intent intent=new Intent(); intent =packageManager.getLaunchIntentForPackage(packagename); mContext.startActivity(intent); }


Ps.关于APK的静默安装还在研究中...



【Android菜鸟笔记- 获取未安装的APK图标版本号包名名称是否安装安装打开】











    推荐阅读