1

我在 Google Play 上有多个应用程序。我正在寻找更好的方法让他们在应用程序之间共享一些敏感数据(例如,某种令牌信息)。我尝试过内容提供者的方法,但这不符合要求。我听说使用 Android KeyChain 或 keystore,可以将数据保存在安全的可共享位置。但是我没有找到很多有用的示例代码来实现这一点。您能否分享/指向一些示例代码,以便能够保存到钥匙串/密钥库并从中检索?

4

2 回答 2

1

如果您的应用使用相同的证书进行签名,您可以使用签名级权限让它们相互授予其他应用无法使用的权限。然后他们可以使用由这些权限过滤的意图相互发送数据。

于 2014-06-28T17:11:46.693 回答
1

您最安全的选择是将sharedUserId分配给您的所有应用程序。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="mypackage"
          android:sharedUserId="mySharedUID"

设置 sharedUserId 会强制 Android 为您的所有共享应用程序分配相同的 Linux 用户,从而使它们能够读取彼此的私有数据。

它甚至允许它们在同一个进程上运行,尽管我认为在你的情况下不需要这样做。

一旦你有了这个,你就可以使用共享首选项、内部内存文件或 sqlite 数据库来共享敏感数据。它们都由 Linux 用户限定,因此对所有共享应用程序都是可见的。

如果您的数据高度敏感,请记住将其放在内部存储器中是不够的。您还需要某种加密:http ://android-developers.blogspot.co.il/2013/02/using-cryptography-to-store-credentials.html

最后 - 请注意 sharedUserId 机制要求您使用相同的证书签署所有共享应用程序。

于 2014-06-28T18:31:30.803 回答