【问题标题】:How to securely share data between two or more applications in android?如何在android中的两个或多个应用程序之间安全地共享数据?
【发布时间】:2016-07-18 02:07:33
【问题描述】:

我正在为企业环境制作一个应用程序框架,其中涉及设备内存中两个或多个应用程序之间的数据共享。这些数据需要存储在设备上并且只有少数应用程序可以访问(可以通过用于安装它们的证书来识别)。此外,它需要以安全的方式存储,以免其他第三方应用程序访问。哪个是实现此功能的最佳方式?

我已阅读有关 ContentProviders and ContentResolvers 的信息,据我了解,这只会促进此过程。数据的实际存储更重要。我还研究了 Android 的Keychain API,这似乎最接近我需要实现的目标。

有没有办法将 ContentProvidersContentResolvers 与 Keychain API 集成?这是正确的方法吗?如果不是,达到同样效果的最佳方法是什么?此外,我还没有找到好的代码示例来完全理解 Keychain API 的功能。 请帮忙!

编辑:
我也看过Keystore API。这在内部使用 Keychain API,并且为了在应用程序之间共享数据,应该使用 Keychain。尽管我无法找到相同的代码示例,也找不到有关如何使用 Keychain API 的详细文档或 API 指南。我正在寻找与iOS Keychain 等效的android。

在 Android 5 中也引入了称为 managed profiles 的东西。这是实现我想要做的事情的正确方法吗?

【问题讨论】:

  • 到目前为止你做了什么?
  • @Amy ,我已经编辑了问题并添加了链接。你能帮忙吗?
  • 你解决了吗?我也在找类似的东西。
  • 你是怎么解决这个问题的?
  • @KeyaMadhukar 你能通过吗?托管配置文件不是最好的选择,因为它在 API 29 中已被弃用。我也想实现类似的功能,但无法在 Keychain 上找到一些好的示例。非常感谢任何帮助。

标签: android android-contentprovider keychain android-contentresolver android-security


【解决方案1】:

您必须使用相同的sharedUserId 声明您的应用程序,例如:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mydomains.myapp"
    android:sharedUserId="com.mydomains.shared.user.id"
    android:sharedUserLabel="@string/appName">

在这种情况下,存储在两个应用程序的私有存储中的所有数据都将可供彼此使用(假设它们已使用相同的签名进行签名)

如阅读手册:

sharedUserId:将与之共享的 Linux 用户 ID 的名称 其他应用。默认情况下,Android 为每个应用程序分配其 拥有唯一的用户 ID。但是,如果此属性设置为相同 对于两个或多个应用程序的价值,它们都将共享相同的 ID — 前提是它们也由相同的证书签名。 具有相同用户 ID 的应用程序可以访问彼此的数据,如果 需要,在同一进程中运行。

【讨论】:

  • 共享用户 ID 有一定的限制,其中一些在 link 中提到了另外,我主要关心的不是如何使数据可访问,而是更多关于应该如何存储(SharedPreferences vs file在内部或外部存储与 sqlite DB 与服务器上)developer.android.com/guide/topics/data/data-storage.html
  • 我的应用程序已经发布,没有android:sharedUserId,现在我想分享我的新应用程序的数据,我该怎么做?如果我们没有设置,你知道android:sharedUserId的默认值是多少吗?
  • 如果您为旧应用程序的新版本设置sharedUserId - 您的用户将无法自动更新您的应用程序 - 这是一个重大问题,所以在设置@987654328之前请记住它@
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多