在 Android 应用程序之间共享数据的最佳实践

问题描述 投票:0回答:3

我需要在不使用互联网的情况下在同一部手机上的两个 Android 应用程序之间共享数据。我要分享的数据包括几个不同数据类型的键值对。我知道的选项是:

  1. 使用意图 - SendReceive。但典型的例子 for intents 不涉及这些用例。意图似乎更多 适用于共享特定 MIME 类型的数据或启动应用程序(或 让用户选择)来处理共享的数据。

  2. 共享SharedPreferences。然而 MODE_WORLD_READABLE 或为此所需的 MODE_WORLD_WRITEABLE 标志已被弃用 发布 API 17.

  3. Broadcast Receivers - 但我并没有完全听事件。 我想使用请求/响应循环。

  4. 内容提供商。这很棒,除了我 需要将数据存储在共享数据的应用程序的数据库中。如果我有键值对 其中值可以是不同的数据类型,这使得数据 表有点麻烦。有没有更好的方法来做到这一点 内容提供商?

采用哪种技术最好?

java android android-intent sharedpreferences android-contentprovider
3个回答
1
投票

我创建了一个小型图书馆,可以使用

SharedPreferences
READ ONLY
的方式轻松地将
ContentProvider
从一个应用程序共享到另一个应用程序。

在这里描述 - https://github.com/ratpik/android-sharedpreferences-api/blob/master/README.md


0
投票

您可以在一端设置广播接收器来监听特定的意图类型。并广播来自第一个应用程序的意图,其中包含额外的数据。您可以使用 parcerable 方法通过意图发送整个对象。

可以找到更多关于 parcerable 方法的信息这里


0
投票

您可以使用带有 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>
© www.soinside.com 2019 - 2024. All rights reserved.