我在Google Play上有多个应用程序。我正在寻找更好的方法,让他们在应用程序之间共享一些敏感数据(比如某种令牌信息)。我尝试过内容提供者的方法,但这不符合要求。我听说使用Android KeyChain或keystore,数据可以保存在一个安全的共享位置。但是我没有找到很多有用的示例代码来实现它。您能否分享/指出一些示例代码,以便能够保存到keychain/keystore中并从中检索?
如果你的应用使用相同的证书签名,你可以使用签名级别的权限使它们相互授予其他应用不可用的权限。然后,它们可以使用经过这些权限过滤的意图相互发送数据。
你最安全的做法是为你所有的应用程序分配一个sharedUserId。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mypackage"
android:sharedUserId="mySharedUID"
设置sharedUserId强制Android分配相同的Linux用户对于所有共享的应用程序,从而使它们能够读取彼此的私人数据。
它甚至允许它们在同一个进程上运行,尽管我认为没有必要这是你的情况。
一旦你有了这个,你就可以使用共享prefs共享敏感数据,内部内存文件或者sqlite数据库。它们都是由Linux用户限定的,因此对所有共享的应用都是可见的。
如果您的数据是高度敏感的,请记住将它放在内存中不是足够了。您还需要某种加密:http://android-developers.blogspot.co.il/2013/02/using-cryptography-to-store-credentials.html
最后-注意sharedUserId机制需要你签名所有共享的应用程序使用相同的证书