java - 如何以编程方式从另一个 Android 应用程序访问/检测特定的 Activity 变量?

标签 java android sdk

假设, 我有两个独立的 Android 项目。
第一个项目是 A,第二个项目是 B。
项目 A 有很多 Activity 类,例如 a、aa、aaa、aaaa 等
项目B也有很多 Activity 类,如b、bb、bbb、bbb等
aa activtiy 包含在项目 A 上。

Boolean foo;

if (request.getParameter("foo") == null)
    foo = false;
else
    foo = true;

不知何故,我需要检测项目 B 中 Activity aa 的 foo 变量是 true 还是 false。
在这种情况下,我尝试这样,从项目 B,在 bb Activity 类中

Intent intent = getPackageManager().getLaunchIntentForPackage(
                    "com.example.a");
            if (intent != null) {
                // detect project A
            } else {
// detect project B
}

我检测项目 A 安装是否成功。

但我想检测项目 B 的 aa Activity 中的 foo 是真是假。
怎么可能?

最佳答案

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

例如:

Class projectAClass = projectAContext .getClassLoader().loadClass("packageName.className");

一旦你有了一个projectAClass(它有foo),你就可以调用一个返回foo值的方法。

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

关于java - 如何以编程方式从另一个 Android 应用程序访问/检测特定的 Activity 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28523828/

相关文章:

java - 如何覆盖包装类中的 toString()?

java - 将 JLabel 添加到 JMapViewer

android - 移动设备作为数据库服务器

android - 在 Android 按钮中垂直居中超大文本

java - 环境系统变量: path not recognized error

iphone - 尝试实现 UI LongPressGesture 时应用程序崩溃

java - Unix 脚本在 Java Process Runtime.exec() 中不起作用

android - 如何知道用户何时将某些内容复制到android中的剪贴板?

c++ - 如何使用诺基亚 sdk 获取显示宽度和高度?

java - 包 javafx.media 不存在