如果没有一个应用程序作为主机,您如何在应用之间共享数据?

时间:2018-05-17 19:12:50

标签: android

Android上是否有适用于许多人的共享数据存储区API解决方案:多次访问?

方案

  • 10+应用程序,其中任何子集都可以安装在设备上。
  • 设备通常处于离线状态,因此无法依赖与服务器同步

期望的结果

  • 每个应用都需要读取/写入一些基本的字符串键/值对(例如登录密钥和其他帐户数据),以便用户在所有应用中看到他们的数据相同。
  • 在iOS上,我们使用Keychain API并将我们应用的每个捆绑ID列入白名单。

解决方案失败?

  • SharedPreferencesContext.MODE_WORLD_WRITABLE并使用android:sharedUserId
    • 在API v17中弃用
  • ContentProvider:据我了解,这通常用于服务器 - >客户端架构,您知道一个应用程序将成为数据的主机,而其他应用程序将使用它。在我们的场景中,我们将安装任何应用程序子集。

解决方案吗

  • 我能提出的最佳解决方案是将每个应用设为ContentProviderBroadcastReceiver。在修改数据时,我们必须向所有已安装的应用程序广播,以便他们的数据是最新的(如果删除了包含最新数据的应用程序)。在加载每个应用程序时,我们会查询所有其他应用程序的数据,如果有任何时间戳大于我们的时间戳,我们可以覆盖我们的数据。

    • 这似乎是一种非常重量级的方法,似乎应该通过Android API支持。
  • 另一种解决方案是将加密文件写入共享位置。

    • 这样做的缺点是我们需要请求文件写入权限,而我们的应用程序不需要这样做。如果可能,我们希望避免这种情况。

我错过了什么吗?有更好的方法吗?

0 个答案:

没有答案