插件化 加载资源的核心代码
来源:互联网 发布:网络保本理财产品排行 编辑:程序博客网 时间:2024/06/04 19:14
插件化 加载其他apk 的资源的核心思想是 拿到其他apk 的Resources 对象,然后通过反射 ,
可以拿到 我们想要的资源,然后使用。
拿到其他apk 的对象 ,主要是通过 AssetManager 的 addAssetPath,方法;
因为这个方法在frameWork 层,所以要通过反射来拿;
相关framework层代码 涉及到(contentImp,ApkLoad,AssetManager )
/**
* 插件化加载资源的核心代码* @author lsw8569013
*
*/
public class PluginResource extends Resources{
public PluginResource(AssetManager assets, DisplayMetrics metrics,
Configuration config) {
super(assets, metrics, config);
// TODO Auto-generated constructor stub
}
public static AssetManager getAssetManager(File file ,Resources resource){
//
try {
Class<?> AssetManager = Class.forName("android.content.res.AssetManager");
Method[] declaredMethods = AssetManager.getDeclaredMethods();
for(Method method : declaredMethods){
if(method.getName().equals("addAssetPath")){
android.content.res.AssetManager assetManager = AssetManager.class.newInstance();
method.invoke(assetManager, file.getAbsolutePath());
return assetManager;
}
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
return null;
}
public static PluginResource getPluginResource(Resources res,AssetManager assetManager){
return new PluginResource(assetManager, res.getDisplayMetrics(), res.getConfiguration());
}
}
0 0
- 插件化 加载资源的核心代码
- 插件化:资源加载
- 加载apk插件的资源
- Notepad++ Tidy2 插件的核心配置代码
- Android插件化完美实现代码资源加载及原理讲解 附可运行demo
- Android插件化之资源动态加载
- android插件化(资源加载)
- 分页插件代码(我的资源中可下)
- 使用ClassLoader加载资源的示例代码
- Android插件化开发 第三篇 [加载插件资源]
- Android插件化开发 第三篇 [加载插件资源]
- ///通用的加载插件的代码:转贴
- Android插件化资源的使用及动态加载 附demo
- Android插件化资源的使用及动态加载 附demo
- Android插件化基础之加载已安装的apk资源
- Android插件化基础之加载未安装的apk资源
- Android如何加载插件APK里面的资源
- Android插件化探索(二)资源加载
- Java中的try catch finally
- 不用数组输出蛇形矩阵
- poj 3984 迷宫问题
- UDP实现图片群发
- 筛选列表中的数据
- 插件化 加载资源的核心代码
- Sphinx实时索引,用增量索引实现索引更新
- 指针实现strlen函数
- 排序算法
- 时序数据监控系统Influxdb+Grafana+Fluented
- vue脚手架 使用npm run dev 遇到的错误问题
- 基于SSH框架的增删改查实例附带源码
- shell脚本的三种执行方式
- eclipse中用jdbc连接mysql数据库的操作