我正在尝试播放存储在SD卡上的视频,每次都会出错。我将首先发布我的代码,然后是堆栈跟踪。
protected void launchVideo( Uri data ) {
try {
Intent intent = new Intent( Intent.ACTION_VIEW );
intent.setDataAndType( data, "video/*" );
startActivity( intent );
}
catch (ActivityNotFoundException e) {
e.printStackTrace();
showErrorDialog( "Unable to open video." );
}
}
传入的示例Uri:/mnt/sdcard/DCIM/Camera/VID_20120312_152550.mp4
每次我得到ActivityNotFoundException
。这是堆栈跟踪:
03-30 12:23:17.890: W/System.err(22867): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/Default/18421.mp4 typ=video/* }
03-30 12:23:17.890: W/System.err(22867): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1512)
03-30 12:23:17.890: W/System.err(22867): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1384)
03-30 12:23:17.890: W/System.err(22867): at android.app.Activity.startActivityForResult(Activity.java:3190)
03-30 12:23:17.898: W/System.err(22867): at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:678)
03-30 12:23:17.898: W/System.err(22867): at android.support.v4.app.Fragment.startActivity(Fragment.java:783)
03-30 12:23:17.898: W/System.err(22867): at com.my.app.GalleryFragment.launchVideo(GalleryFragment.java:222)
我是否使用错误的语法输入本地视频?我浏览了手机,我可以验证视频是否存在,我已将其移至桌面上并播放。我使用Uri数据创建了一个File
并调用exists()
并返回true。
我的应用使用这种方法播放网络视频很好,实际上我试图播放来自网络流的视频很好。我有多个本地视频,但都没有。>
感谢您的反馈。
答案 0 :(得分:0)
试试这个:
Uri name = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/Test_Movie.m4v");
Intent intent = new Intent(Intent.ACTION_VIEW);
String type = "video/mp4";
intent.setDataAndType(name, type);
startActivity(intent);
答案 1 :(得分:0)
我不知道为什么我无法播放SD卡中的视频,但我找到了解决方案。
我没有给视频提供文件路径,而是使用Uri.withAppendedParts(Video.Media.EXTERNAL_CONTENT_URI, Integer.toString(id));
给出内容Uri。这有效,现在正在播放视频。
答案 2 :(得分:0)