1.思路:
- 1.1 通过反射AssetManager的addAssetPath方法传入插件activity的路径得到插件的AssetManager
- 1.2 通过AssetManager创建插件的Resources对象
- 1.3 通过得到插件的Resources对象就可以通过getIdentifier方法得的插件的所有资源信息
2.代码
/**
* 创建assetmanager
* @param dexPath
* @return
*/
private AssetManager createAssetManager(String dexPath) {
try {
AssetManager assetManager = AssetManager.class.newInstance();
Method addAssetPath = assetManager.getClass().getMethod("addAssetPath", String.class);
addAssetPath.invoke(assetManager, dexPath);
return assetManager;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
/**
* 创建resources
* @param assetManager
* @return
*/
private Resources createResources(AssetManager assetManager) {
Resources superRes =this.getResources();
Resources resources = new Resources(assetManager, superRes.getDisplayMetrics(), superRes.getConfiguration());
return resources;
}
int layoutID = getResources().getIdentifier("activity_main", "layout", "com.Company.Demo");
后面的包名是插件的包名,这个样就可以获取插件的所有资源了