当文件保存在 Context.getExternalFilesDir 方法返回的路径中时,Android 视频播放器无法加载字幕

问题描述

我需要为播放视频文件 (mp4) 创建一个 Intent。在与视频文件相同的文件夹中是字幕文件(srt)。如果某些 Android 视频播放器位于同一路径且名称相同(仅文件扩展名不同),则它们会自动读取并显示字幕。如果路径为 /storage/emulated/0/videos,则效果很好,如果路径为 /storage/emulated/0/Android/data/com.example.test/files/videos,则无效,因为这是外部应用存储。

我想,由于使用了应用存储空间,视频播放器在访问字幕方面存在权限问题。

查看意图:

public Intent getViewIntent() {
    Intent i = new Intent(Intent.ACTION_VIEW);
    Uri uri = FileProvider.getUriForFile(ctx,ctx.packageName + ".provider",path) //path is path to mp4 file
    i.setDataAndType(uri,"video/*");
    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
    return i;
}

使用者:

startActivity(Intent.createChooser(getViewIntent(),null));

文件提供者包含 <external-files-path name="external_app_specific" path="." />,所以内容方案是:

视频文件content://com.example.test.provider/external_app_specific/video/testRec1.mp4
字幕文件content://com.example.test.provider/external_app_specific/video/testRec1.srt

如何授予视频播放器可读的字幕文件的权限?谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)