String apkPath = apk.getAbsolutePath();
Log.i(getClass().getName(), "addApk(): apkPath = " + apkPath);
PackageInfo localPackageInfo = pm.getPackageArchiveInfo(apkPath, 0);
localPackageInfo.applicationInfo.sourceDir = apkPath;//! null point exception无法得到apk的图标,名字,版本等。我也尝试了魔术数字8192而不是0,但也不起作用。有人有什么建议吗?提前行动!
我把我的代码改为:
PackageInfo pi = pm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
if (pi != null) {
ApplicationInfo ai = pi.applicationInfo;
Drawable appIcon = pm.getApplicationIcon(ai);
String appName = pm.getApplicationLabel(ai).toString();
String appVersion = pi.versionName;
String pkgName = ai.packageName;
Log.i(getClass().getName(), "pkgName = " + pkgName + ", appName = " + appName + ", appVersion = " + appVersion);
adapter.add(new InstallItem(pkgName, appIcon, appName, appVersion));
}得到了这样的输出:
pkgName = com.chaozh.iReaderFree,appName = com.chaozh.iReaderFree,appVersion = 1.3.2.0 .
正如您在这里看到的,我无法获得应用程序名称,它的图标总是默认相同的图标。我厌倦了市场上的其他安装程序,它们工作得很好,所以有人告诉我怎么做?谢谢。
发布于 2012-06-15 12:54:19
这是正确的答案,有一些窍门(SDK>8!):
public Drawable getApkIcon(String path){
PackageManager pm = getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(path, PackageManager.GET_ACTIVITIES);
if(info != null){
ApplicationInfo appInfo = info.applicationInfo;
if(Build.VERSION.SDK_INT >= 8){
appInfo.sourceDir = path;
appInfo.publicSourceDir = path;
}
return appInfo.loadIcon(pm);
}
return null;
}发布于 2015-04-08 08:51:36
最简单的方法只是使用它的packageName获取任何应用程序的图标
public static final Drawable getIconOfAppUsingPackageName(Context context,String packageName)
{
Drawable icon = context.getPackageManager().getApplicationIcon(packageName);
imageView.setImageDrawable(icon);
return icon;
}https://stackoverflow.com/questions/10928826
复制相似问题