在项目实做中我碰到这样一个问题,我从晚上下载了一个apk然后安装到模拟器上,假设这已安装的apk为A.apk,我在我的程序里想调用A.apk中的类B.class中的非静态方法C,如何调用?

解决方案 »

  1.   

    如果只是调apk的话
    ComponentName comp = new ComponentName("xxxx", "xxxx");//第一个参数是app包名,第二个是你要掉的activity的包名
    Intent intent = new Intent(action);
    intent.setComponent(comp);
    startActivity(intent);如果你要调用某个方法的话建议你使用aidl
      

  2.   

    在JAVA中要调用一个类的非静态方法,你首先要实例化此类,然后用实例化的对象去调用其方法。
    如:B b = new B();
    b.c();
      

  3.   

    楼主说调用另一个apk类的静态方法,另一个apk不是aidl的话,好像不太现实吧
      

  4.   

    1楼给以的代码好像只能调用另外一个apk中的类,这个我已经实现了,现在需要调用那个类里面的非静态方法。  你说建议使用aidl  能不能说的更清楚一点,比如说给我个例子
      

  5.   

    应该不能调用具体的方法,但是可以具体到某个activity,你可以专门写个activity用来调用那个方法的呀
      

  6.   

    呵呵 虽然问题还是没有解决 但是还是要谢谢大家  我现在遇到的关键问题是那个要调用的apk是第三方开发的,我没有源码 也不可能改到源码 
      

  7.   

    可以去反编译,一些so里的方法还是可以调用的,只要知道so对应的jni接口名称和参数,返回值,就能用了。
    如果是主程序里自己写的static方法,那不行
      

  8.   

    楼上的,你看到的这个,不行,楼主说要调用方法,不是调用activity,调用方法,那就是提供一个接口暴露给调用者,就是一个AIDL服务啊