Java 如何以编程方式从另一个android应用程序访问/检测特定的活动变量?

Java 如何以编程方式从另一个android应用程序访问/检测特定的活动变量?,java,android,sdk,Java,Android,Sdk,假设, 我有两个独立的android项目。 第一个项目是A,第二个项目是B。 项目A有许多活动类别,如A、aa、aaa、aaaa等。 项目B也有许多活动类,如B、bb、bbb、bbb等。 aa活动包含在项目A上 Boolean foo; if (request.getParameter("foo") == null) foo = false; else foo = true; 不知何故,我需要从项目B中检测活动aa的foo变量是真是假。 在这种情况下,我试着这样做,从项目B开

假设, 我有两个独立的android项目。
第一个项目是A,第二个项目是B。
项目A有许多活动类别,如A、aa、aaa、aaaa等。
项目B也有许多活动类,如B、bb、bbb、bbb等。
aa活动包含在项目A上

Boolean foo;

if (request.getParameter("foo") == null)
    foo = false;
else
    foo = true;
不知何故,我需要从项目B中检测活动aa的foo变量是真是假。
在这种情况下,我试着这样做,从项目B开始,在bb活动课内

Intent intent = getPackageManager().getLaunchIntentForPackage(
                    "com.example.a");
            if (intent != null) {
                // detect project A
            } else {
// detect project B
}
我检测到项目安装是否成功。

但我想检测项目B中aa活动的foo是真是假。

怎么可能呢

使用Context.createPackageContext()为您感兴趣的项目B的.apk实例化一个包。
Context projectAContext=this.createPackageContext(“packageName”,Context.Context包含代码)
如果它使用与项目A相同的证书进行签名,并且两个APK都使用相同的共享用户ID,那么您可以使用该标志将其代码加载到流程中,从而允许您从上下文中获取类加载器并实例化所需的类

例如:

Class projectAClass = projectAContext .getClassLoader().loadClass("packageName.className");
一旦有了projectAClass(它有foo),就可以调用一个返回foo值的方法

projectAClass.getMethod("getfoo", noparams).invoke(projectAClass.newInstance(), null);