首页 > 解决方案 > 同一设备上的android应用程序之间的通信

问题描述

我正在构建一个基于从 Internet 获取的数据进行特定计算的应用程序,我们将这些计算称为“最终数据”。最终数据必须可供同一设备上的其他应用程序(第三方应用程序)使用(读取和写入)。所以计划是创建一个 Android 库/模块并分发它。一旦第 3 方应用程序开发人员将此库添加到他的应用程序,他的应用程序必须能够读取/写入我的应用程序持有的“最终数据”(如果我的应用程序已安装)并在我的应用程序上执行某些方法 ( recalculateStuff())。

我在决定什么是实现上述库的最佳方式时遇到了困难,以下是我尝试/研究过的选项:

  1. AIDL
  2. 绑定服务
  3. 意图
  4. 自定义本地 tcp 服务器/客户端,或 http 服务器/客户端

一件重要的事情是我希望能够知道哪个 3rd 方应用程序正在尝试修改一个值(因为用户将能够允许/阻止特定应用程序读取/写入最终数据),为此,解决方案编号3和4不合适(请纠正我,因为我经常出错),我找不到验证1和2中“请求者包名称”的方法。

还有人提到 AIDL 在使用不同密钥签名的应用程序之间不起作用,这是真的吗(在 Android 开发人员文档中找不到任何内容,并且尚未测试)?

我的问题是:还有其他更好的方法(沟通和识别)吗?如果是,是哪个?如果没有,4 个考虑的解决方案中的哪一个最适合?谢谢

标签: androidandroid-intentaidl

解决方案


推荐阅读