Closed Vixb1122 closed 2 years ago
Android 系统里应用间传递文件的方式是通过 URI(格式是 content://provider_name/path
)实现的,出现这个情况是播放器假定了 URI 的最后一段就是文件名,但其实不能这样假定,URI 的内容完全可能是任何东西。正确的做法是向 URI 的提供者查询这个 URI 的 OpenableColumns.DISPLAY_NAME
信息,这个 display name 才是真正能给用户展示的。
@zhanghai 同样是打开视频文件,手机内置存储里面的视频文件名是正常的,打开smb里面的视频文件才会出这个问题。 这个url应该是只转码文件地址前面的路径吧,文件名应该用原名才对,我试了其他支持smb的文件管理器,用三方视频播放器打开都没有问题。
https://play.google.com/store/apps/details?id=files.fileexplorer.filemanager https://play.google.com/store/apps/details?id=pl.solidexplorer2
这个url应该是只转码文件地址前面的路径吧,文件名应该用原名才对
URI 的内容完全可能是任何东西。正确的做法是向 URI 的提供者查询这个 URI 的 OpenableColumns.DISPLAY_NAME 信息,这个 display name 才是真正能给用户展示的。
@zhanghai 我简单测了下,其他文件管理器smb服务器里面的视频文件是通过 http 连接发送给其他应用的。 类似这种 http://127.0.0.1:57871/1fe4/videos/86-不存在的战区-.mp4 所以视频播放器直接播放的是web链接,能拿到文件名。而且用这种方式播放视频会更快一些,基本不用缓冲。 content url 通过 DISPLAY_NAME 能拿到文件名,直接截取就会出问题。
质感文件的情况 其他文件管理器和mx player自带的情况