近期在开发一款APP,需要调用google play service,前提是安装了。虽然可以通过以下代码可以判断是否安装了,但是有时总是棋差一着。关键的包名没找着,难以对此功能实践。
private boolean isApplicationExist(String packageName){
try {
getPackageManager().getApplicationInfo(packageName,
PackageManager.GET_UNINSTALLED_PACKAGES);
return true;
} catch (NameNotFoundException e) {
return false;
}
}
经过反复的研究之后,发现通过APK可以获取包名。提供以下两种方法以供大家参考:
1.暴力方式:将APK转化重命名为zip格式,解压之后即可看到;
2.技术手段:研究Android API发现,官方提供的PackageManager,PackageInfo,ApplicationInfo这三个类获取APK相关的信息。代码如下:
private String getApkPackageName(String filePath){
PackageManager pm = getPackageManager();
PackageInfo info = pm.getPackageArchiveInfo(filePath,
PackageManager.GET_ACTIVITIES);
if (info != null) {
ApplicationInfo appInfo = info.applicationInfo;
String appName = pm.getApplicationLabel(appInfo).toString();
String packname = appInfo.packageName;
String version = info.versionName;
return packname;
} else {
return null;
}
}
个人愚见,如有更好的方法,还望告之。