无法使用原生Android视频播放器播放SD卡中的视频

时间:2012-03-30 17:33:53

标签: android android-video-player

我正在尝试播放存储在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。

我的应用使用这种方法播放网络视频很好,实际上我试图播放来自网络流的视频很好。我有多个本地视频,但都没有。>

感谢您的反馈。

3 个答案:

答案 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)