Android加载外部资源

本地存放一个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);

重点:要获取读写权限,因为写Demo忽略了这一点,导致寻找问题的方向错误~~

你可能感兴趣的:(Android加载外部资源)