如何在android中的两个或多个应用程序之间安全地共享数据?
我正在为企业环境制作一个应用程序框架,它涉及从设备内存在两个或多个应用程序之间共享数据。这些数据需要存储在设备上,并且只能由少数应用程序访问(可以通过用于安装它们的证书来识别)。此外,它需要以安全的方式存储,以便其他第三方应用程序无法访问。实现此功能的最佳方式是什么 据我所知,我已经阅读了一些只会促进这一进程的材料。数据的实际存储才是更重要的。我还研究了Android的功能,这似乎是最接近我需要实现的功能 有没有办法将ContentProviders和ContentResolver与密钥链API集成?这样做正确吗?如果没有,实现相同目标的最佳方法是什么?此外,我还没有找到好的代码示例来完全理解keychainAPI的功能请帮忙强> 编辑:如何在android中的两个或多个应用程序之间安全地共享数据?,android,android-contentprovider,keychain,android-contentresolver,android-security,Android,Android Contentprovider,Keychain,Android Contentresolver,Android Security,我正在为企业环境制作一个应用程序框架,它涉及从设备内存在两个或多个应用程序之间共享数据。这些数据需要存储在设备上,并且只能由少数应用程序访问(可以通过用于安装它们的证书来识别)。此外,它需要以安全的方式存储,以便其他第三方应用程序无法访问。实现此功能的最佳方式是什么 据我所知,我已经阅读了一些只会促进这一进程的材料。数据的实际存储才是更重要的。我还研究了Android的功能,这似乎是最接近我需要实现的功能 有没有办法将ContentProviders和ContentResolver与密钥链API
我也看过了。这在内部使用了Keychain API,为了在应用程序之间共享数据,应该使用Keychain。虽然我还没有找到相同的代码示例,也没有关于如何使用keychainapi的详细文档或API指南。我正在寻找一款android版的
Android 5中还引入了一种称为的功能。这是实现我想做的事情的正确方法吗 您必须使用相同的
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的应用程序可以访问彼此的数据,如果
需要时,在同一进程中运行
到目前为止你做了什么?@Amy,我已经编辑了问题并添加了链接。你能帮忙吗?你解决了吗?我也在寻找一个类似的问题。你是如何解决这个问题的?@KeyaMadhukar你能解决吗?托管配置文件并不是最好的选择,因为它在API 29中已被弃用。我还想实现类似的功能,但无法在Keychain上找到一些好的示例。非常感谢您的帮助。共享用户ID有一定的限制,其中一些限制在本文中也提到过,我主要关心的不是如何访问数据,而是如何存储(内部或外部存储中的SharedReferences vs file vs服务器上的sqlite DB vs)我的应用程序已经发布,没有android:sharedUserId,现在我想分享我的新应用程序的数据,我该怎么做?你知道如果我们没有设置,
android:sharedUserId
的默认值是什么吗?如果你将为旧应用程序的新版本设置sharedUserId
,你的用户将无法自动更新你的应用程序-这是一个重大问题,所以在设置sharedUserId