从 SharedPreferences 的文件中读取内容 Uri 并获得对其的持久权限
Read content Uri from File from SharedPreferences and get persistent permission on it
可以通过应用选择器从文件资源管理器调用我的应用。
我从传输的 PDF 文件中捕获给定的 contentUri
并使用 sharedPreferences
.
保存内容 uri
如果我再次启动我的应用程序,我想再次打开保存的 PDF 文件(从 sharedPreferences 读取 contentUri)。
但不应再打开文件选择器。
但我无法通过 App Chooser 调用 ACTION_OPEN_DOCUMENT
,因为我直接从 sharedpreferences
获得 uri
。我也不能打电话
getContentResolver().takePersistableUriPermission(uri, takeFlags);
.
所以我无法再次访问此文件。
我怎样才能获得对文件的永久访问权。复制到 INTERNAL_STORAGE
真的是唯一的解决方案吗?
谢谢,
亚历杭德罗
I catch the given contentUri from the transmitted PDF file
根据您在评论中对我的问题的回复,我将此解释为:您正在从入站 Intent
获得 Uri
到您的一项活动,例如通过 ACTION_VIEW
或 ACTION_SEND
.
and save the content uri useing sharedPreferences
那是行不通的。
将 Uri
视为类似于 URL 的受密码保护的网站。只要会话 cookie 正常,URL 就可以工作,但是一旦该会话过期或清除 cookie,URL 就没用了。
同样,that Uri
is good at most for your running process,对此您无能为力。
如果您需要长期访问内容,可以:
在您控制的某个文件中复制该内容,或者
停止响应 ACTION_VIEW
/ACTION_SEND
,而是使用 ACTION_OPEN_DOCUMENT
和 takePersistableUriPermission()
可以通过应用选择器从文件资源管理器调用我的应用。
我从传输的 PDF 文件中捕获给定的 contentUri
并使用 sharedPreferences
.
如果我再次启动我的应用程序,我想再次打开保存的 PDF 文件(从 sharedPreferences 读取 contentUri)。 但不应再打开文件选择器。
但我无法通过 App Chooser 调用 ACTION_OPEN_DOCUMENT
,因为我直接从 sharedpreferences
获得 uri
。我也不能打电话
getContentResolver().takePersistableUriPermission(uri, takeFlags);
.
所以我无法再次访问此文件。
我怎样才能获得对文件的永久访问权。复制到 INTERNAL_STORAGE
真的是唯一的解决方案吗?
谢谢, 亚历杭德罗
I catch the given contentUri from the transmitted PDF file
根据您在评论中对我的问题的回复,我将此解释为:您正在从入站 Intent
获得 Uri
到您的一项活动,例如通过 ACTION_VIEW
或 ACTION_SEND
.
and save the content uri useing sharedPreferences
那是行不通的。
将 Uri
视为类似于 URL 的受密码保护的网站。只要会话 cookie 正常,URL 就可以工作,但是一旦该会话过期或清除 cookie,URL 就没用了。
同样,that Uri
is good at most for your running process,对此您无能为力。
如果您需要长期访问内容,可以:
在您控制的某个文件中复制该内容,或者
停止响应
ACTION_VIEW
/ACTION_SEND
,而是使用ACTION_OPEN_DOCUMENT
和takePersistableUriPermission()