可以通过应用程序选择器从文件浏览器调用我的应用程序。我明白了 contentUri
从传输的pdf文件中删除,并使用 sharedPreferences
.
如果我再次启动我的应用程序,我想再次打开保存的pdf文件(从SharedReferences读取contenturi)。但不应再打开任何文件选择器。
但我不能打电话 ACTION_OPEN_DOCUMENT
通过应用程序选择器,因为我获得 uri
直接来自 sharedpreferences
. 我也不能打电话 getContentResolver().takePersistableUriPermission(uri, takeFlags);
.
所以我无法再次访问此文件。
我怎样才能永久访问该文件。正在复制到 INTERNAL_STORAGE
真的是唯一的解决办法吗?
谢谢,亚历杭德罗
1条答案
按热度按时间bvpmtnay1#
我从传输的pdf文件中捕获给定的contenturi
根据您在评论中对我的问题的回答,我将其解释为:您正在获得
Uri
从入境的Intent
到您的活动之一,例如通过ACTION_VIEW
或ACTION_SEND
.并使用SharedReferences保存内容uri
那是行不通的。
想想
Uri
类似于受密码保护的网站的url。只要会话cookie是好的,url就可以工作,但一旦会话过期或cookie被清除,url就没有用处。同样地
Uri
对于您的运行过程来说,它最多是好的,对此您无能为力。如果您需要长期访问内容,请执行以下任一操作:
在您控制的某个文件中复制该内容,或
停止响应
ACTION_VIEW
/ACTION_SEND
,而使用ACTION_OPEN_DOCUMENT
及takePersistableUriPermission()