Intent.ACTION_VIEW视频:外部存储视频"对不起,此视频无法播放",但在普通的Android播放器中,它是可播放的

Mar*_*arl 1 android android-video-player android-intent

所以我正在播放外部存储(sdcard)的视频,我在播放视频时出现问题,这是我的代码:

Uri uri = Uri.parse(url);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");
Run Code Online (Sandbox Code Playgroud)

它提示"抱歉,这个视频无法播放",但在普通的Android播放器中,它是可播放的.我打印了网址,这就是我得到的:

VideoPlayer url: file:///mnt/sdcard/foldername/video-2012-12-26-21-26--44.mp4
Run Code Online (Sandbox Code Playgroud)

这是uri的问题吗?如果不是,你能指出我正确的方向.另外,如果我尝试一个带点(.)的foldername,我会遇到问题吗?

url = file:///mnt/sdcard/Android/data/com.example.project/video-2012-12-26-21-26--44.mp4
Run Code Online (Sandbox Code Playgroud)

谢谢.

编辑:由于我的真正问题没有解决,也没有人想再回答,我开辟了一个新问题: Android:视频可以从画廊播放但是当我使用Intent.ACTION_VIEW类型视频播放时,无法播放

部分回答我的问题:

由于命名约定,会出现此问题.我认为播放器不接受其中包含" - "的文件名.所以我通过更改文件名格式解决了这个问题.

//免责声明:我没有完整的解释和来源,但这些信息只是从我的解决方法中推断出来的.

ρяσ*_*я K 9

确保你使用Intent传递正确的SD卡路径.最好的方法是使用Environment.getExternalStorageDirectory()获取SDCARD路径而不是传递静态字符串:

intent = new Intent(Intent.ACTION_VIEW);

File sdCard = Environment.getExternalStorageDirectory();
File file = new File(sdCard, "/foldername/video-2012-12-26-21-26-44.mp4");

intent.setDataAndType(Uri.fromFile(file), "video/*");

startActivity(intent);
Run Code Online (Sandbox Code Playgroud)