内容提供商授予uri权限

时间:2014-04-10 13:58:06

标签: android permissions uri provider grant

我搜索并阅读了android开发者文件,但我没有找到任何令人满意的答案,内容提供商授予uri权限。任何人都可以解释得更详细,更简单。我的问题是: uri正在使用什么资助? grant uri permission true和false之间的区别是什么 什么时候应该使用true?什么时候假? 我们非常感谢任何细节。

3 个答案:

答案 0 :(得分:9)

  

uri正在使用什么资助?

"授予Uri权限"功能允许您拥有第三方通常无法访问的ContentProvider,但有选择地允许在短时间内访问各个第三方应用的单个Uri值(例如,足够长的时间来查看提供者所服务的PDF。)

  

grant uri permission true和false

之间的区别是什么?

android:grantUriPermissions="true"表示您的Java代码可以对FLAG_GRANT_READ_URI_PERMISSION所服务的任何FLAG_GRANT_WRITE_URI_PERMISSION使用UriContentProvider

android:grantUriPermissions="false"表示只有Uri元素指定的<grant-uri-permission>值可以与FLAG_GRANT_READ_URI_PERMISSIONFLAG_GRANT_WRITE_URI_PERMISSION一起使用。

答案 1 :(得分:3)

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

除非您指定其他应用可以访问您的应用内容,否则没有其他应用可以访问该文件。为此,您可以创建内容提供商,并说明表格内容中的所有内容://com.your.app/file您重定向&#39;到您的应用程序缓存目录。

一些代码:

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 =&#34;假&#34;表示只有Uri值   由儿童指定&lt; grant-uri-permission&gt;元素可以使用   FLAG_GRANT_READ_URI_PERMISSION和FLAG_GRANT_WRITE_URI_PERMISSION。

答案 2 :(得分:0)

appender.rolling.fileName