Androidは携帯電話にapkがインストールされている一般的な操作です
2090 ワード
携帯電話にApkがインストールされているContextを取得する方法
携帯電話にインストールされているApp情報を取得
他のAppのAndroidManifestを取得します.xml中アプリケーションノード下meta-dataデータ
携帯電話にインストールされている他のApkリソースを取得
まとめ
context.createPackageContext(packageName,flags);
packageName:
flags:
1.packageName , Context
2.flags , CONTEXT_INCLUDE_CODE CONTEXT_IGNORE_SECURITY 。
CONTEXT_INCLUDE_CODE , 。
CONTEXT_IGNORE_SECURITY , , , 。
携帯電話にインストールされているApp情報を取得
PackageManager pm = getPackageManager();
List installedPackages = pm.getInstalledPackages(PackageManager.GET_META_DATA);
他のAppのAndroidManifestを取得します.xml中アプリケーションノード下meta-dataデータ
ApplicationInfo appInfo = packageInfo.applicationInfo;
String meta = appInfo.metaData.getString("EZWEATHER_PLUGIN");
携帯電話にインストールされている他のApkリソースを取得
Resources resources = pm.getResourcesForApplication(packageName);
int id = resources.getIdentifier("preview_image", "drawable", appInfo.packageName);
まとめ
PackageManager pm = getPackageManager();
List installedPackages = pm.getInstalledPackages(PackageManager.GET_META_DATA);
for (PackageInfo packageInfo : installedPackages) {
ApplicationInfo appInfo = packageInfo.applicationInfo;
if (null != packageInfo && null != appInfo.metaData) {
String meta = appInfo.metaData.getString("WEATHER_PLUGIN");
if ("mobi.infolife.ezweather.plugin.widget".equals(meta)) {
Log.d(TAG, " ");
Log.d(TAG, " " + packageInfo.packageName);
try {
Resources resources = pm.getResourcesForApplication(appInfo);
int id = resources.getIdentifier("preview_image", "drawable", appInfo.packageName);
tv.setCompoundDrawablesWithIntrinsicBounds(ContextCompat.getDrawable(this, id), null, null, null);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
}