两个应用程序之间的android通信

Posted

技术标签:

【中文标题】两个应用程序之间的android通信【英文标题】:android communication between two applications 【发布时间】:2011-06-06 01:16:37 【问题描述】:

我需要一些帮助,了解如何开始开发两个相互通信的 android 应用程序(在一部手机上)。

    应用程序 A 向应用程序 B 发送一个字符串。 应用程序 B 接收到字符串例如“startClassOne”,应用程序 B 使用方法启动 classOne 并获取结果。结果被发送回(再次作为字符串!)到应用程序 A。 应用程序 A 将收到的来自 B 的字符串写入控制台。

【问题讨论】:

你想建立一个类似聊天的应用吗? 不,应用程序应该相互通信,应用程序B中的活动应该做一些事情,比如振动,改变灯光等等,如果例如振动开始,应用程序B会发送一个结果字符串像(“振动成功”)到应用程序 A(应用程序 a 稍后会做更多事情,但对于这个例子,我只需要在这两个应用程序之间进行通信) 我真的需要同样的逻辑我尝试使用远程服务你能检查我的问题吗? ***.com/questions/64478498/… 【参考方案1】:

您好,我需要一些帮助,了解如何开始开发两个相互通信的 Android 应用程序(在一部手机上)。

总的来说,您通常不希望人为地将一个应用程序一分为二,尤其是如果您是两者的作者。

话虽如此,您可以:

让应用程序 B 公开一个 IntentService,它将通过来自应用程序 A 的 startService() 调用,结果通过来自 createPendingResult()PendingIntentMessenger 或广播 IntentResultReceiver;或 让应用程序 B 使用 AIDL 中定义的 API 公开 Service,并让应用程序 A 绑定到该服务,然后让应用程序 A 在应用程序 B 上调用方法,或者 从应用程序 A 向应用程序 B 发送广播 Intent,结果将通过上面第一个项目符号中的相同选项列表传回,或者 让应用程序 B 实现内容提供程序,并让应用程序 A 使用 ContentResolver 来操作该内容提供程序 等等

确保处理您所做工作的所有安全后果,因为您公开的 API 不仅供应用程序 A 使用,而且供设备上的任何应用程序使用,除非您使用权限保护它。

【讨论】:

假设我们有一个应用程序需要知道其他 5 个应用程序的数据文件夹中是否有特定文件。最好使用什么机制,以便第一个应用程序可以发送消息并从第一个拥有该文件的应用程序接收“是”结果字符串或真正的布尔值? 关于使用ResultReceiver 的第一个选项,当我尝试在我的第二个应用程序中从意图中获取可打包的结果接收器时,我得到:E/Parcel: Class not found when unmarshalling: com.myapp.demo.DemoActivity$1 是否有一些棘手的部分? @L3K0V:我建议您提出一个单独的 Stack Overflow 问题,您可以在其中提供一个最小、完整且可验证的问题示例,其中包括 Java 堆栈跟踪和trace 指的是。 @CommonsWare 你能看看吗? ***.com/q/35067178/1274974 嗨@CommonsWare 你能检查我的问题吗? ***.com/questions/64478498/…

以上是关于两个应用程序之间的android通信的主要内容,如果未能解决你的问题,请参考以下文章

开发两个 android 应用程序并在两个应用程序之间进行通信

Android两个子线程之间通信

(转载) Android两个子线程之间通信

Android中两个Activity之间简单通信

为啥蓝牙在android中需要DBUS通信方式?

如何在android中使用NFC在两个设备之间发送数据?