我需要在不使用互联网的情况下在同一部手机上的两个 Android 应用程序之间共享数据。我要分享的数据包括几个不同数据类型的键值对。我知道的选项是:
使用意图 - Send 和 Receive。但典型的例子 for intents 不涉及这些用例。意图似乎更多 适用于共享特定 MIME 类型的数据或启动应用程序(或 让用户选择)来处理共享的数据。
共享SharedPreferences。然而 MODE_WORLD_READABLE 或为此所需的 MODE_WORLD_WRITEABLE 标志已被弃用 发布 API 17.
Broadcast Receivers - 但我并没有完全听事件。 我想使用请求/响应循环。
内容提供商。这很棒,除了我 需要将数据存储在共享数据的应用程序的数据库中。如果我有键值对 其中值可以是不同的数据类型,这使得数据 表有点麻烦。有没有更好的方法来做到这一点 内容提供商?
采用哪种技术最好?
我创建了一个小型图书馆,可以使用
SharedPreferences
以 READ ONLY
的方式轻松地将 ContentProvider
从一个应用程序共享到另一个应用程序。
在这里描述 - https://github.com/ratpik/android-sharedpreferences-api/blob/master/README.md
您可以在一端设置广播接收器来监听特定的意图类型。并广播来自第一个应用程序的意图,其中包含额外的数据。您可以使用 parcerable 方法通过意图发送整个对象。
可以找到更多关于 parcerable 方法的信息这里
您可以使用带有 AIDL 的服务在应用程序之间共享您需要的任何内容:
Android 接口定义语言 (AIDL) 与其他语言类似 IDLs:它让你定义编程接口 客户和服务达成一致,以便相互沟通 使用进程间通信(IPC)。
https://developer.android.com/guide/components/aidl
您可能还需要为 Android 11(API 级别 30)定义一个查询
<manifest package="com.example.app">
<queries>
<!-- Specific apps you interact with, eg: -->
<package android:name="com.example.service" />
</queries>
...
</manifest>