8

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

我已经阅读了有关ContentProvidersContentResolvers的内容,据我了解,它们只会促进这个过程。数据的实际存储更重要。我还研究了 Android 的Keychain API,这似乎最接近我需要实现的目标。

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

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

Android 5 中还引入了称为托管配置文件的东西。这是实现我想要做的事情的正确方法吗?

4

1 回答 1

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 的应用程序可以访问彼此的数据,并且如果需要,可以在同一进程中运行。

于 2016-03-30T08:03:31.887 回答