Android 如何使用存储访问框架(SAF)获取可移动SD卡中的绝对路径?

Android 如何使用存储访问框架(SAF)获取可移动SD卡中的绝对路径?,android,android-5.0-lollipop,android-sdcard,Android,Android 5.0 Lollipop,Android Sdcard,是否有任何方法可以使用存储访问框架(SAF)从位于可移动SD卡中的特定文件夹和文件获取绝对路径 谢谢不,即使您可以,您也无法访问它们,除非它们恰好位于可移动媒体上您具有读取权限的两个位置之一(例如,getExternalFilesDirs()) 存储访问框架返回指向文档的Uri值。使用ContentResolver和类似openInputStream()的方法来处理它们。这大致相当于获取指向文档的URL值,并使用HTTP客户端打开一个流来处理这些文档的内容。也许这会有所帮助——问题是openIn

是否有任何方法可以使用存储访问框架(SAF)从位于可移动SD卡中的特定文件夹和文件获取绝对路径


谢谢

不,即使您可以,您也无法访问它们,除非它们恰好位于可移动媒体上您具有读取权限的两个位置之一(例如,
getExternalFilesDirs()


存储访问框架返回指向文档的
Uri
值。使用
ContentResolver
和类似
openInputStream()
的方法来处理它们。这大致相当于获取指向文档的URL值,并使用HTTP客户端打开一个流来处理这些文档的内容。

也许这会有所帮助——问题是openInputStream并不适用于所有内容。MediaMuxer类就是一个很好的例子,因为它需要一个文件绝对路径作为目标,所以现在的MediaMuxer只能用于指向内部存储。@PerracoLabs:
MediaMuxer
也不能用于URL。因此,处理存储访问框架场景的方式与处理Web场景的方式相同。我从未使用过
MediaMuxer
,但从文档的快速扫描中,我看到的唯一涉及文件的地方是输出的写入。因此,您必须先将
MediaMuxer
写入内部存储器,然后在完成这个muxing操作时,将其从
Uri
/URL传输到
OutputStream
。@如果我有6 gb的可用手机内存和32 gb的SD卡内存,我将录制数小时的视频,视频容量大约为10 gb,当内部存储器只有6GB可用空间时,我应该如何首先写入它?搬家也要花很多时间anyway@user924:“当内部存储器只有6 GB可用空间时,我应该如何首先写入它?”--分块记录(例如,每个文件2GB),在记录下一个块的同时传输记录的块。或者,记录到可移动存储上可用的位置(例如,
getExternalMediaDirs()
),尽管我不会尝试记录单个10GB文件,因为可移动存储上的文件系统可能不支持这种功能。@Commonware我尝试了FFmpeg JavaCV,它可以使用
OutputStream
直接录制到sd卡,但它有我无法解决的下一个问题,seeking不起作用,它无法确定视频的长度,我只能使用MKV录制,而不能使用MP4录制到sd卡这边