获取已装配的程序和APK文件的信息

获取已安装的程序和APK文件的信息
对于APK文件
PackageManager mPackageManager = getPackageManager();
PackageInfo p = mPackageManager.getPackageArchiveInfo(<file path>, 0);

if (p != null) {
	ApplicationInfo appInfo = p.applicationInfo;
	String appname = mPackageManager.getApplicationLabel(appInfo)
			.toString();
	String packageName = p.packageName;
	String versionName = p.versionName;
	Drawable icon = mPackageManager.getApplicationIcon(appInfo);
}


对于已安装的程序
// get all installed application
PackageManager mPackageManager = getPackageManager();
List<PackageInfo> packs = mPackageManager.getInstalledPackages(0);

int size = packs.size();
for (int i = 0; i < size; i++) {
	PackageInfo p = packs.get(i);

	if (p.applicationInfo.sourceDir.startsWith("/system/app")) {
		// ignore system application
		continue;
	}

	// get application detail
	ApplicationInfo appInfo = p.applicationInfo;
	String appname = mPackageManager.getApplicationLabel(appInfo)
			.toString();
	String packageName = p.packageName;
	String versionName = p.versionName;
	Drawable icon = mPackageManager.getApplicationIcon(appInfo);
}

1 楼 tonyzzp 2011-12-01  
mPackageManager.getApplicationLabel(appInfo)
mPackageManager.getApplicationIcon(appInfo);

这种对于没有安装的,apk文件是不行的。

没安装的apk文件,只能得到resId,不能得到值。
(比如label icon applicationname等,都只能得到resid,得不到值)

有其他什么办法吗?
2 楼 dai_lm 2011-12-01  
tonyzzp 写道
mPackageManager.getApplicationLabel(appInfo)
mPackageManager.getApplicationIcon(appInfo);

这种对于没有安装的,apk文件是不行的。

没安装的apk文件,只能得到resId,不能得到值。
(比如label icon applicationname等,都只能得到resid,得不到值)

有其他什么办法吗?


SDK1.6上应该是正确的啊,你在SDK是多少?