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

时间:2013-01-03 04:39:46

标签: android android-intent android-video-player

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

Uri uri = Uri.parse(url);
intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(uri, "video/*");

它提示“抱歉,此视频无法播放”,但在常规Android播放器中,它是可播放的。我打印了网址,这就是我得到的:

VideoPlayer url: file:///mnt/sdcard/foldername/video-2012-12-26-21-26--44.mp4

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

url = file:///mnt/sdcard/Android/data/com.example.project/video-2012-12-26-21-26--44.mp4

感谢。

编辑:由于我的真正问题没有解决,也没有人想再回答,我提出了一个新问题: Android: Video is playable from gallery but when I play it using Intent.ACTION_VIEW type video, cannot play

部分回答我的问题:

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

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

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

您首先需要将路径转换为真实路径。 例如,如果您有类似 content://flod/123 的路径 您需要将其转换为文件夹名称/文件.mp4 + Environment.getExternalStorageDirectory()

之类的路径

所以你的路径字符串将是: 字符串路径 = Environment.getExternalStorageDirectory() + "文件夹名/file.mp4"; 然后你需要把它转换成文件:

File file = new File(path);

最后在一行中使用它:

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