Android 从另一个应用程序接收Intent EXTRA_消息

Android 从另一个应用程序接收Intent EXTRA_消息,android,android-intent,android-activity,Android,Android Intent,Android Activity,在我的Eclipse工作区中,我有我的主要应用程序:A 我还有一个功能齐全的应用程序:B 我已经将应用程序A配置为使用Intent在单击按钮时打开应用程序B,并且它可以工作 问题是: 在应用程序B中,我需要接收额外的_消息。但是,我无法访问该信息,因为应用程序B无法识别应用程序A: String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE_DESC); 声明“MainActivity”无法解析为变量 *附录:我正在处理应

在我的Eclipse工作区中,我有我的主要应用程序:A 我还有一个功能齐全的应用程序:B

我已经将应用程序A配置为使用Intent在单击按钮时打开应用程序B,并且它可以工作

问题是:

在应用程序B中,我需要接收额外的_消息。但是,我无法访问该信息,因为应用程序B无法识别应用程序A:

String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE_DESC);
声明“MainActivity”无法解析为变量

*附录:我正在处理应用程序B的实际代码,因为打开应用程序A中的类引用会显示一个不可编辑的显示

似乎我需要更改应用程序B的清单,并在B的构建路径中添加应用程序A。。。这看起来很混乱,而且不便于重用


感谢您的帮助

为什么不在应用程序a和B之间使用共享库。在project.properties文件中,您可以提及此共享库的路径。使用android.library.reference

但对于进程间通信,最好使用AIDL

有趣的问题

Intent.getStringExtra()的参数是一个字符串,其中包含与扩展数据关联的键。要获取这些数据,您需要知道密钥,而不是它来自的应用程序或活动的名称。有时,开发人员会将应用程序的包名前置到键值,但键值不可能仅是包名、发送活动或发送应用程序的名称

如果您知道扩展数据是如何存储的,请找到键值并使用它检索数据。对于将其意图公开的应用程序,您应该能够找到这一点


否则,您无法按设计检索扩展数据。这是一项安全功能,用于防止未经授权的应用程序从意图中读取数据。

是的,AIDL是一个选项。但是,对于共享相同GUID的两个应用程序(也就是说,它们来自同一个开发人员),更快的选择是发送意图。