项目中用到的方法,有些代码久久不用很容易忘记,记录下来
1、获取未安装apk的版本、图标等信息,这里使用上次的工程TestB.apk,使用PackageManager及PackageInfo类
private String getUninstallAPKInfo(Context ctx,String archiveFilePath) {
//archiveFilePath=Environment.getExternalStorageDirectory()+"/"+"TestB.apk"
String versionName = null;
String appName = null;
String pakName = null;
PackageManager pm=ctx.getPackageManager();
PackageInfo pakinfo=pm.getPackageArchiveInfo(archiveFilePath,PackageManager.GET_ACTIVITIES);
if (pakinfo!=null) {
ApplicationInfo appinfo=pakinfo.applicationInfo;
versionName=pakinfo.versionName;
Drawable icon=pm.getApplicationIcon(appinfo);
appName=(String) pm.getApplicationLabel(appinfo);
pakName=appinfo.packageName;
}
return versionName;
}
String versionName = null;
String appName = null;
String pakName = null;
PackageManager pm=ctx.getPackageManager();
PackageInfo pakinfo=pm.getPackageArchiveInfo(archiveFilePath,PackageManager.GET_ACTIVITIES);
if (pakinfo!=null) {
ApplicationInfo appinfo=pakinfo.applicationInfo;
versionName=pakinfo.versionName;
Drawable icon=pm.getApplicationIcon(appinfo);
appName=(String) pm.getApplicationLabel(appinfo);
pakName=appinfo.packageName;
}
return versionName;
}
2、获取已安装指定的apk的版本、图标等信息
//获得指定安装包的VersionName
private String getVersionName(String pkgName){
String name = null ;
String versionName = null ;
int versionCode ;
PackageManager pm = ApkSettingActivity.this.getPackageManager();
List<PackageInfo> packs = pm.getInstalledPackages(0);
int length = packs.size();
PackageInfo p;
for(int i=0;i < length;i++) {
p = packs.get(i);
if(p.applicationInfo.packageName.equals(pkgName)){
name = p.name;
versionName = p.versionName;
Log.i(TAG, "================指定的APKversionName:"+versionName+"=========");
return versionName;
}
}
return versionName;
}
3、获取已安装的所有apk的版本、图标等信息
- ArrayList<AppInfo> appList = new ArrayList<AppInfo>(); //用来存储获取的应用信息数据List < PackageInfo > packages = getPackageManager().getInstalledPackages( 0 ); for ( int i = 0 ;i < packages.size();i ++ ) { PackageInfo packageInfo = packages.get(i); AppInfo tmpInfo = new AppInfo(); tmpInfo.appName = packageInfo.applicationInfo.loadLabel(getPackageManager()).toString(); tmpInfo.packageName = packageInfo.packageName; tmpInfo.versionName = packageInfo.versionName; tmpInfo.versionCode = packageInfo.versionCode; tmpInfo.appIcon = packageInfo.applicationInfo.loadIcon(getPackageManager()); // Only display the non-system app infoif ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0 ) { appList.add(tmpInfo);//如果非系统应用,则添加至appList } }