2014-04-10 139 views
5

我搜索并阅读了android开发者文件,但是我没有找到任何令人满意的内容提供者授予uri权限的答案。任何人都可以解释得更详细,更简单。我的问题是: uri使用什么授权? 授权uri权限真假之间的区别是什么 什么时候应该使用true?当错误? 和任何更多的细节表示赞赏。内容提供者授予uri权限

回答

5

uri使用的是什么?

“授予Uri权限”功能,可以让你有一个ContentProvider即通常由第三方无法访问,但选择性地允许访问单个Uri值个别第三方应用程序的时间很短的时间(例如,足够长的时间查看供应商提供的PDF)。

什么是授予URI许可之间的区别真假

android:grantUriPermissions="true"表明您的Java代码可以使用FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION由该ContentProvider担任任何Uri

android:grantUriPermissions="false"表示仅由子指定的Uri<grant-uri-permission>元素可以与FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION使用。

+0

我仍然在同一点,不明白为什么授权uri使用,当我们应该使用。你能否更详细地解释一下,并像初级开发者那样告诉我。 – Android

1

假设您需要邮寄应用程序缓存目录中的某个文件。

除非您指定其他应用程序可以访问您的应用程序的内容,否则其他应用程序无法访问该文件。为此,您创建内容提供者,并说,所有的URI都以表单内容://com.your.app/file将您重定向到您的应用程序缓存目录。

某些代码:

File f = ...; // Some local file. 
Uri uri = Uri.parse("content://com.your.app/" + f.getName()); 
Intent intent = new Intent(Intent.ACTION_SEND); 
intent.setType("text/plain"); 
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
intent.putExtra(Intent.EXTRA_TEXT, "Body"); 
intent.putExtra(Intent.EXTRA_STREAM, uri); 

// You only can add flag FLAG_GRANT_READ_URI_PERMISSION if your app has 
// android:grantUriPermissions="true" in manifest or see quote below. 
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); 
startActivity(Intent.createChooser(intent, "Send Email")); 

正如CommonsWare说:

机器人:grantUriPermissions = “假” 表示只由子<许可-URI的许可>元素可以指定 的URI值与 FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION一起使用。