Android加载外部资源
2020-11-06 本文已影响0人
Lemon666
本地存放一个APK资源包,假设路径为
String apk_path = "本地APK包路径";
创建一个AssetManger加载本地资源包
AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, apk_path);
通过AssetManager获取Resource对象,后面两个参数可以直接获取当前应用的参数
Resources resources = new Resources(assetManager, getResources().getDisplayMetrics(), getResources().getConfiguration());
根据资源字符串获取对应的资源ID
- 第一个参数:资源名称
- 第二个参数:资源所在目录
- 第三个参数:资源所在的包名
包名可以通过PackageManager获取
PackageManager mPm = getPackageManager();
PackageInfo mInfo = mPm.getPackageArchiveInfo(apkPath, PackageManager.GET_ACTIVITIES);
String packageName = mInfo.packageName;
int id = resources.getIdentifier("img_station_return", "drawable", packageName);
根据ID获取对应数据对象
Drawable drawable = resources.getDrawable(id);
使用数据
ivImg.setImageDrawable(drawable);