gpt4 book ai didi

Android "storing"和 "reusing"获取的 URI

转载 作者:行者123 更新时间:2023-12-04 23:56:18 25 4
gpt4 key购买 nike

我的应用程序通过 ACTION_PICK Intent 收集媒体以获取android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI 内容类型。当我检索我想要的内容的 URI 时,效果很好,我可以通过以下方式查看它:

val intent = Intent(Intent.ACTION_VIEW, myURI)
intent.setDataAndType(myURI,contentResolver.getType(myURI))
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION)
startActivity(intent)
我用 Uri.toString 存储 Uri方法,一旦我关闭 Activity 并再次打开它,我就会收到以下错误:
java.lang.SecurityException: UID 10315 does not have permission to content://com.miui.gallery.open/raw/%2Fstorage%2Femulated%2F0%2FDCIM%2FCamera%2FVID_20200814_214253.mp4 [user 0]
再往下:
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.uri.UriGrantsManagerService.checkGrantUriPermission(UriGrantsManagerService.java:1192)
at com.android.server.uri.UriGrantsManagerService.checkGrantUriPermissionFromIntent(UriGrantsManagerService.java:579)
at com.android.server.uri.UriGrantsManagerService.grantUriPermissionFromIntent(UriGrantsManagerService.java:618)
at com.android.server.uri.UriGrantsManagerService$LocalService.grantUriPermissionFromIntent(UriGrantsManagerService.java:1392)
理想情况下,我会获取媒体的文件路径并通过 fileProvider 从文件生成 URI,但我还没有找到从 ContentURIs 获取绝对路径的方法。
通读 https://commonsware.com/blog/2016/08/10/uri-access-lifetime-shorter-than-you-might-think.html这更好地解释了正在发生的事情,那么如何重用或存储通过其 URI 检索到的文件?我可以以某种方式检索文件路径而不是 URI 吗?

最佳答案

I store the Uri with Uri.toString method


那是行不通的。您对从 ACTION_PICK 获得的内容的权利是 very short-lived . (注意:此链接指向您在问题中链接到的我的博客文章的较新版本)

Ideally I would get the file path of the media


那也行不通。 ACTION_PICK 没有要求或类似的操作来返回与文件系统相关的任何内容,更不用说您可以直接访问的某些文件了。在您的具体情况下, MediaStore拥有比您更大的访问权限,因此您在 MediaStore 中找到的内容可能无法访问,即使您查询半弃用的 DATA列尝试查找路径。另外, ACTION_PICK 的实现用户选择的可能不会返回 MediaStore Uri反正。
如果你需要能够选择一段内容,坚持它的 Uri , 并使用 Uri要稍后处理内容,您需要:
  • 使用ACTION_OPEN_DOCUMENT而不是 ACTION_PICK
  • 调用 takePersistableUriPermissions()ContentResolver ,传入Uri你得到

  • 现在,您可以长期访问内容......假设用户没有做一些戏剧性的事情,比如删除它。 😁

    关于Android "storing"和 "reusing"获取的 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63478041/

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