1. 程式人生 > >Android開發之獲取APK的包名

Android開發之獲取APK的包名

近期在開發一款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;
		}
	}
個人愚見,如有更好的方法,還望告之。