模块动态加载-总结
来源:互联网 发布:软件研发中心介绍 编辑:程序博客网 时间:2024/05/16 00:48
根据用户自己选择,动态加载模块。刚开始,没点路,听一朋友说:在MTK和symbian上可用动态库dll来解决问题,但android中,不通过jni是没法调用C++代码的。后来在网上搜索,因关键字不知道怎么写,所以一直没找到答案,后来在论坛上发帖,终于找到突破口,以下是寻求解决办法的帖子:
http://topic.csdn.net/u/20100824/09/b205efdf-34c3-47c8-8946-52a434898e0e.html
http://topic.csdn.net/u/20100820/09/0dfdb65a-66fc-4d84-bf1b-896e45fcd923.html
先感谢论坛上的兄弟,热情的讨论,给了我思路。
思路:将不同的模块做成不同的apk,需要加载什么模块,让程序直接去下载对应的apk文件即可,不同的apk之间,通过Intent或则包名 + 类名 来访问,即可,至于数据如何共享,我想应该是用ContentProvider去解决。数据共享这部分,我还没去试验。
先放上我今天下午测试的代码:
//从SD卡上安装下载下来的apk文件,该过程会出现一个询问用户的界面,出于安全考虑
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
String type = "application/vnd.android.package-archive";
intent.setDataAndType(Uri.parse("file://"+ "/sdcard/TestActty.apk"),type);
startActivity(intent);
//从当前apk中进入到上一步安装好的apk中去,两种方法:
1、 通过包名,类名进行访问
Intent mIntent = new Intent();
ComponentName comp = new ComponentName("com.test.testaccty", "com.test.testaccty.TestActty");
mIntent.setComponent(comp);
startActivity(mIntent);
2、通过intent访问
Intent intent = new Intent("android.acp.act");
startActivity(intent);
//android.acp.act 是一个activity对应的名称,如:
<activity android:name=".TestActty"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.acp.act" />//android.acp.act 在这里
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
明天有空,再验证下不同apk之间共享数据的问题。
- 模块动态加载-总结
- 模块动态加载技术
- Flex动态加载模块
- python动态加载模块
- Lua动态加载模块
- dkms动态模块加载
- python动态加载模块
- Lua动态加载模块
- Erlang动态编译加载模块
- freeSWITCH中动态加载模块
- linux内核动态加载模块
- linux内核动态加载模块
- python动态加载模块(reload)
- linux内核动态加载模块
- Python 模块动态加载技术
- Linux动态加载内核模块
- nodejs 动态加载模块 _compile
- gdb调试动态加载模块
- 使用OnNcHitTest消息实现无标题窗口的移动
- 好好学习哦
- javascript onmouseup事件
- joj2687
- 很实用的字符串翻转(拿过来就可以用的)
- 模块动态加载-总结
- 定点c程序之六(完):Q值的选取和动态Q值
- 计算机编码简介(ASCII、ANSI、EBCDIC、Unicode)
- core下的extjs详解
- ASP.NET中GridView设计汇总
- 一个判断日期的程序设计问题:
- Ext.ux.UploadDialog 整合 Struts2 实现多文件上传
- 救命啊:SSH实习项目
- WebService服务