如何跨应用程序限制内容提供商数据



我们如何确保某些应用程序无法访问存储在内容提供商中的我的数据,而在某些其他应用程序中可以访问这些数据?基本上,我需要允许我感兴趣的一些应用程序访问存储在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是否有权访问您的提供程序。然而,实际上实现一个真正安全的不同策略需要大量的仔细思考和设计。

在AndroidManifest.xml中,在具有ContentProvider属性的屏幕上,您有两个字段:

读取权限WritePermission

因此,您可以定义安全字符串(也可能是某个文件的路径),这些字符串是访问您的ContentProvider的权限。

要访问您的内容提供商的应用程序必须在其UsesPermission元素中添加该应用程序。

最新更新