内容提供商授予uri权限

And*_*oid 10 provider permissions android uri grant

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

Com*_*are 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用于任何Uri服务ContentProvider.

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

  • 我仍然处于同一点,不明白为什么使用 grant uri,什么时候应该使用。你能不能解释得更详细一些,像初级开发人员一样告诉我。 (2认同)

Bor*_*rzh 7

假设您需要邮寄一些位于应用程序缓存目录中的文件。

没有其他应用程序可以访问该文件,除非您指定其他应用程序可以访问您的应用程序的内容。为此,您创建内容提供程序,并说,所有 uri 格式为 content://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"));
Run Code Online (Sandbox Code Playgroud)

正如 CommonsWare 所说:

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