我一直在努力,如何在不让每个应用程序出现前景的情况下最好地实现应用程序间通信。我曾考虑过使用BroadcastReceivers在这两个应用程序之间进行通信,但是看来它们必须在清单中进行注册,因此很难将数据带入活动中。一个示例就是一个应用程序会将其状态发送给另一个应用程序,表明它已准备好开始运行会话。但是,我希望在启动会话时将另一个应用程序保留在后台,并让用户根据自己的意愿在应用程序之间切换。
有人知道什么是最好的方法吗?基本上,只要其他应用程序正在运行,我就希望将数据发送到另一个应用程序。
答案 0 :(得分:5)
我想您对broadcastreceiver
的想法还算不错:
您不必在清单中注册broadcastreceiver
,也可以按需甚至使用Activity
在组合中创建它们。
但是除此之外,还有一些方法可以解决您的问题:
方法1
首先,您可以使用IntentService
和PendingIntent
来使用ResultReceiver
进行简单的通信。
另请参见这个伟大的stackoverflow问题以获取更多信息:
android communication between two applications
方法2
一种更通用的方法是使用IntentFilter
和一种方案来捕获发送数据。它也是基于Intent的,并且可以解决您的情况,如果(!)您可以正确地处理数据捕获:仅在数据正在运行的情况下。
另请参阅本文以获取此方法的(简短)示例:
https://android-developers.googleblog.com/2009/11/integrating-application-with-intents.html
方法3
最后但并非最不重要的一点:利用共享(但受保护!)文件和其他数据存储选项。这可能是一个加密的文件,并且在您的第二个应用程序运行时处于活动状态。这可能还需要其他提到的选项的其他部分,例如可以由IntentService
或Alarmmanager
管理的运行JobScheduler
。
对于这种情况,我建议使用官方的Android文档:
https://developer.android.com/training/secure-file-sharing/setup-sharing.html https://developer.android.com/guide/topics/data/data-storage.html
加:因为在大多数情况下,您会获得某种“后台运行服务”, 我建议您看看Android提供的一些方法,因为它们可以完全改变适合的方法和可能性:
https://www.bignerdranch.com/blog/choosing-the-right-background-scheduler-in-android/
长话短说:
祝您好运,并随时通知我! ;)