我正在尝试做类似于stackoverflow posting的操作。我想要做的是从SD卡上读取活动或服务的定义。为避免出现明显的权限问题,我在.apk中创建了此活动的shell版本,但尝试在运行时将其替换为存储在SD卡上的同名活动。不幸的是,我可以使用DexClassLoader从SD卡加载活动类定义,但原始类定义是执行的。有没有一种方法可以指定新的类定义替换旧的定义,或者在没有实际提供包中所需的活动的情况下避免出现清单权限问题的任何建议?代码示例:Android,如何使用DexClassLoader动态替换活动或服务
发动/sdcard/mypath/My.apk
指定的
com.android.my.path.to.a.loaded.activity
的
ClassLoader cl = new DexClassLoader("/sdcard/mypath/My.apk",
getFilesDir().getAbsolutePath(),
null,
MainActivity.class.getClassLoader());
try {
Class<?> c = cl.loadClass("com.android.my.path.to.a.loaded.activity");
Intent i = new Intent(getBaseContext(), c);
startActivity(i);
}
catch (Exception e) {
这一翻译,它会启动静态加载到项目活动。
我有一种感觉,这不能简单地完成,因为Android如何处理资产。如果您在另一个应用程序的类中调用了startActivity,它将不得不加载该应用程序的线程,因此它只是Android Intents的一个危险的替代方案。 – Tom 2011-08-01 03:42:18