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

时间:2011-05-25 05:46:38

标签: android android-contentprovider

我们如何确保某些应用程序无法访问存储在内容提供商中的数据,而某些其他应用程序可以访问该数据?基本上我需要允许一些我感兴趣的应用程序访问存储在Content Provider中的数据,但我不希望所有应用程序都能够访问该数据。我怎样才能做到这一点?

感谢。

2 个答案:

答案 0 :(得分:18)

最简单的方法是使用您定义的权限保护内容提供商。将其设为签名权限,以便只有使用您的证书签名的应用才能获得。

请参阅:

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是否有权访问您的提供程序。实际上,实施一个实际上安全的不同政策需要大量仔细的思考和设计。

答案 1 :(得分:4)

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

阅读权限 WritePermission

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

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