迄今为止,在与内容提供器共同使用时,标准权限系统描述通常是不充分的。一个内容提供器要 保护它自己及读和写权限,当为了它们产生作用,它的直接客户端总是需要手动的对其它应用程序 指定URI。一个典型的例子是邮件应用程序中的附件。访问邮件的权限应该被保护,因为这是敏感用 户数据。可以,如果一个网址图片附件提供给一个图片查看器,那个图片查看器将没有权限打开这 个附件,因为它没有原因去拥有一个权限从而不能访问所有的电子邮件。
对于这个问题的解决是通过网址权限:当开始一个活动或对一个活动返回一个结果,调用者可通过设置Intent.FLAG_GRANT_READ_URI_PERMISSION 和Intent.FLAG_GRANT_WRITE_URI_PERMISSION 中的一个或者两个。允许接收活动权限访问在Intent中特定的数据地址,不论它有权限访问数据在内容提供器相应的Intent中。
这种机制允许一个公用的功能性模型使用户相互交互(打开一个附件,从一个列表中选择一个联系人,等等) 驱动ad-hoc在优粒度权限的许可下。这可能是一个主要设备,应用程序为了减少这个权限而需要,仅仅直接关系到它们的行为。
这优粒度URI权限的许可工作,然而,请求一些协作和内容提供者保持那些URI。强烈推荐内容提供者实现这种设备,并且通过android:grantUriPermissions 属性或者 <grant-uri-permissions> 标签声明支持它。
更多信息可以在Context.grantUriPermission(), Context.revokeUriPermission(), 和 Context.checkUriPermission() 方法中找到。