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