从SharedReferences文件中读取内容uri,并获取对其的持久权限

nafvub8i  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(402)

可以通过应用程序选择器从文件浏览器调用我的应用程序。我明白了 contentUri 从传输的pdf文件中删除,并使用 sharedPreferences .
如果我再次启动我的应用程序,我想再次打开保存的pdf文件(从SharedReferences读取contenturi)。但不应再打开任何文件选择器。
但我不能打电话 ACTION_OPEN_DOCUMENT 通过应用程序选择器,因为我获得 uri 直接来自 sharedpreferences . 我也不能打电话 getContentResolver().takePersistableUriPermission(uri, takeFlags); .
所以我无法再次访问此文件。
我怎样才能永久访问该文件。正在复制到 INTERNAL_STORAGE 真的是唯一的解决办法吗?
谢谢,亚历杭德罗

bvpmtnay

bvpmtnay1#

我从传输的pdf文件中捕获给定的contenturi
根据您在评论中对我的问题的回答,我将其解释为:您正在获得 Uri 从入境的 Intent 到您的活动之一,例如通过 ACTION_VIEWACTION_SEND .
并使用SharedReferences保存内容uri
那是行不通的。
想想 Uri 类似于受密码保护的网站的url。只要会话cookie是好的,url就可以工作,但一旦会话过期或cookie被清除,url就没有用处。
同样地 Uri 对于您的运行过程来说,它最多是好的,对此您无能为力。
如果您需要长期访问内容,请执行以下任一操作:
在您控制的某个文件中复制该内容,或
停止响应 ACTION_VIEW / ACTION_SEND ,而使用 ACTION_OPEN_DOCUMENTtakePersistableUriPermission()

相关问题