如何从android中的外部apk调用GUI类

时间:2015-08-26 11:49:05

标签: android reflection

我已经通过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();
    }

1 个答案:

答案 0 :(得分:0)

在Android中,您没有单位'GUI'。你可能在谈论Activity。如果您想要启动另一个包的Activity,则无需进行反射。只需发送Intent即可。 http://developer.android.com/training/basics/intents/index.html