我的应用程序允许用户从他们最喜欢的应用程序中选择媒体(图像,视频,音频)以浏览这些文档。然后,我将该图像的URI(而不是下载整个图像)存储到db中。重新启动应用程序时,我需要利用这些URI来提取缩略图,对于图像,要提取URI中的完整图像,以便在应用程序中显示它们。
我已经阅读了有关最初使用ACTION_OPEN_DOCUMENT,授予适当的URI权限,然后在解析器上使用takePersistableUriPermission的各种文章和文档。
一切正常。问题在于,世界上有很多个应用程序在管理不支持ACTION_OPEN_DOCUMENT但支持ACTION_GET_CONTENT的媒体选择。
我想做什么:
当选择用于查找媒体的应用的初始意图的实现为ACTION_OPEN_DOCUMENT时,此方法非常有效。
我不需要在媒体上执行写操作-只需打开选择(并利用用户选择的结果URI),然后存储此URI供以后使用。
如何弥合需要持久URI与不支持ACTION_OPEN_DOCUMENT意图的应用程序之间的差距?
答案 0 :(得分:2)
如果您想使用ACTION_GET_CONTENT
:
步骤1:将数据复制到您控制的某个文件中(在内容上打开InputStream
,然后将字节复制到FileOutputStream
)
步骤2:坚持指向您数据副本的Uri
换句话说,我们无法保证您从Uri
回来的ACTION_GET_CONTENT
会在5分钟内有用,更不用说5小时,5天,5周等了。
或者,集成file chooser library并将自己限制为文件系统上对您可见的文件。