android - 同一设备上的android应用程序之间的通信
问题描述
我正在构建一个基于从 Internet 获取的数据进行特定计算的应用程序,我们将这些计算称为“最终数据”。最终数据必须可供同一设备上的其他应用程序(第三方应用程序)使用(读取和写入)。所以计划是创建一个 Android 库/模块并分发它。一旦第 3 方应用程序开发人员将此库添加到他的应用程序,他的应用程序必须能够读取/写入我的应用程序持有的“最终数据”(如果我的应用程序已安装)并在我的应用程序上执行某些方法 ( recalculateStuff()
)。
我在决定什么是实现上述库的最佳方式时遇到了困难,以下是我尝试/研究过的选项:
- AIDL
- 绑定服务
- 意图
- 自定义本地 tcp 服务器/客户端,或 http 服务器/客户端
一件重要的事情是我希望能够知道哪个 3rd 方应用程序正在尝试修改一个值(因为用户将能够允许/阻止特定应用程序读取/写入最终数据),为此,解决方案编号3和4不合适(请纠正我,因为我经常出错),我找不到验证1和2中“请求者包名称”的方法。
还有人提到 AIDL 在使用不同密钥签名的应用程序之间不起作用,这是真的吗(在 Android 开发人员文档中找不到任何内容,并且尚未测试)?
我的问题是:还有其他更好的方法(沟通和识别)吗?如果是,是哪个?如果没有,4 个考虑的解决方案中的哪一个最适合?谢谢
解决方案
推荐阅读
- flutter - 未处理的异常:PlatformException(错误,无效选择开始:24,null,java.lang.IndexOutOfBoundsException:无效选择开始:24
- python - 如何使用pytorch同时迭代和单独打印两个数据加载器?
- python - 使用 torch.cat 时出现 CUDA 非法内存访问错误
- sql - Clickhouse 中有许多列的前 N 行性能
- laravel - 如何在 Laravel 推送器中触发事件
- typescript - 我需要帮助引用在 nestJs 的 @Schema 属性中声明的 id
- javascript - 为什么 .menu-class 在 AdminLTE3 中转到另一个页面后不起作用?
- mysql - 可以对这个查询进行什么样的查询优化?
- node.js - 使用节点 js 返回所有带有过滤文件的文件
- java - 某些语言的国家名称无效