我们如何确保某些应用程序无法访问我存储在内容提供商中的数据,而某些其他应用程序可以访问这些数据?基本上我需要允许一些我感兴趣的应用程序访问我存储在 Content Provider 中的数据,但我不希望所有应用程序都能够访问该数据。我怎样才能做到这一点?
谢谢。
最佳答案
最简单的方法是使用您定义的权限来保护内容提供者。将其设为签名权限,这样只有使用您的证书签名的应用才能获得它。
参见:
http://developer.android.com/guide/topics/security/security.html
http://developer.android.com/reference/android/R.styleable.html#AndroidManifestProvider
http://developer.android.com/guide/topics/manifest/provider-element.html
如果基于证书这样做还不够,您将需要自己编写权限检查。这是通过为应用程序的传入调用调用 Binder.getCallingUid() 并确定给定的 uid 是否有权访问您的提供者来完成的。不过,实际实现一个真正安全的不同政策需要大量仔细的思考和设计。
关于android - 如何跨应用程序限制内容提供者数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6120025/