Java 如何以编程方式从另一个android应用程序访问/检测特定的活动变量?
假设, 我有两个独立的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开
第一个项目是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);