"无法播放视频"从数据库中读取uri后,VideoView中出现错误

时间:2018-05-15 14:19:06

标签: android database uri

在我的应用中,我使用Intent选择视频如下:

    Intent intent = new Intent();
    intent.setType("video/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(intent, SELECT_VIDEO);

然后视频的uri以字符串格式保存在数据库中

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == SELECT_VIDEO) {
        Uri selectedVideoUri = data.getData();
        if (selectedVideoUri != null) {
                    videoPathList.add(selectedVideoUri.toString());

我从数据库中读取字符串,使用Uri.parse()方法将其转换为uri并使用它来播放视频。然而,我得到了#34;不能播放视频"错误。

    VideoView videoView =(VideoView)findViewById(R.id.videoView);

    //Creating MediaController
    MediaController mediaController= new MediaController(this);
    mediaController.setAnchorView(videoView);

    Uri uri= Uri.parse(getIntent().getStringExtra("video_path"));

    //Setting MediaController and URI, then starting the videoView
    videoView.setMediaController(mediaController);
    videoView.setVideoURI(uri);
    videoView.requestFocus();
    videoView.start();

如果我使用onActivityResult()中获得的uri进行播放,则视频播放正常。只有在以字符串格式将uri保存到数据库后才会出现此问题。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

  

然后视频的uri以字符串格式保存在数据库中

以后可能无法使用Uri

  

我该如何解决这个问题?

在Android 4.4及更高版本中,切换为ACTION_OPEN_DOCUMENT而不是ACTION_GET_CONTENT。然后,当您获得Uri时,请在takePersistableUriPermissions()上致电ContentResolver。这可以让您持久访问Uri标识的内容,并且您应该可以稍后播放视频...当然,假设视频仍在那里。

有关此主题的更多信息,请参阅this blog post