2011-05-25 62 views
13

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

谢谢。

回答

16

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

请参见:

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

4

在AndroidManifest.xml,在你的ContentProvider的属性的屏幕上,你有两个领域:

阅读权限 WritePermission

所以,你可以定义安全字符串(也可能路径到一些文件),这些文件是访问你的ContentProvider的权限。

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

+0

如果该读取权限字符串泄露并且某些第三方应用程序也将其添加到其清单中,该怎么办?提供者如何避免这种情况 – Javanator 2018-02-22 14:07:26