gpt4 book ai didi

android - 自动授予 Uri 权限

转载 作者:行者123 更新时间:2023-11-29 22:35:28 30 4
gpt4 key购买 nike

我有一个简单的内容提供程序,可以向其他应用程序提供文件。它扩展了 ContentProvider(不是 FileProvider)并且它在 list 中声明如下:

<provider
android:name="com.FileProvider"
android:authorities="com.FileProvider"
android:exported="false"
android:grantUriPermissions="true" />

query 方法返回一个包含以下列(_display_name_datasize)的简单游标。

我还实现了返回相同文件的 openAssetFile

我正在使用以下代码与其他应用共享我的 URI:

val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://com.FileProvider/teste"))
intent.type = "image/*"

startActivity(intent)

URI 中的最终路径段并不重要,因为 query 方法总是返回相同的游标。

我成功地能够与其他应用程序共享文件,但是,我在任何地方都没有通过调用 Context.grantUriPermission 或通过 Intent 标志授予对此 URI 的读取或写入权限。提供程序未导出。

我已经在使用 FileProvider 实现的其他应用程序中检查了此行为。即使 URI 指向内部文件,也可以共享它们。

删除 android:grantUriPermissions="true" 会产生预期的行为,所以看起来这一行是自动授予权限的。但这不是文档所说的。

我的问题是,如果我没有授予其他应用程序共享此 URI 的权限,为什么我可以共享此 URI?

最佳答案

I'm successfully able to share the file with other apps, however, in no place am I giving read nor write permissions to this URI by calling Context.grantUriPermission nor through intent flags.

Google 添加了在某些情况下自动授予 FLAG_GRANT_READ_URI_PERMISSION 的逻辑,我认为这是一种向后兼容的举措。 ACTION_SEND was one of them .我仍然引导开发人员手动添加标志,以防某些 future 的 Android 版本恢复此更改(或设备制造商恢复),但从技术上讲这不是必需的。

关于android - 自动授予 Uri 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543331/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com