我已经通过DexClassLoader加载了一个外部apk。 在一个方法中将调用具有.xml布局的GUI加载。 但我无法通过调用方法查看此GUI(来自外部apk)
总之,我想通过invoke方法从外部APK文件加载GUI。 请帮我 !! p / s:抱歉我的英文!
final File _optimizedDexOutputPath = getDir("outdex", Context.MODE_PRIVATE);
String _className;
String _methodToInvoke;
String _apkfilePath;
HashMap<String, String> hmData;
//Prepare
hmData = preWorkflow();
_className = hmData.get("className");
_apkfilePath = hmData.get("apkfilePath");
_methodToInvoke = hmData.get("methodToInvoke");
DexClassLoader dLoader = new DexClassLoader(_apkfilePath,
_optimizedDexOutputPath.getAbsolutePath(),
null, ClassLoader.getSystemClassLoader().getParent());
try {
Class<?> loadedClass = dLoader.loadClass(_className);
Object obj = (Object) loadedClass.newInstance();
Method m = loadedClass.getDeclaredMethod(_methodToInvoke);
m.invoke(obj);
} catch (IllegalAccessException e) {
e.getCause().printStackTrace();
} catch (InvocationTargetException e) {
e.getCause().printStackTrace();
}catch (NullPointerException e){
e.getCause().printStackTrace();
} catch(Exception ex) {
ex.printStackTrace();
}
答案 0 :(得分:0)
在Android中,您没有单位'GUI'。你可能在谈论Activity
。如果您想要启动另一个包的Activity
,则无需进行反射。只需发送Intent
即可。 http://developer.android.com/training/basics/intents/index.html