将 VideoView 与基本的经过身份验证的 URL 一起使用

Using VideoView with basic authenticated URLs

我想知道如何正确显示从经过身份验证的 URL 到 VideoView 的视频。我的代码在 Lollipop (5.0) 之前运行。现在,在编译到 APIs 21 和 22 之后,错误发生了。我尝试编译回 API 19,但我使用的 appcompat 库破坏了很多代码。这是我的示例代码:

                Uri videoUri = Uri.parse("https://user:12345@sample.com/dir1/dir2/dir3/myVideo.mp4");
                vidAtt.setVideoURI(videoUri);

我已经试过了

vidAtt.setVideoURI(videoUri, headers);

但最小 API 是 21,而我的是 API 16。我尝试了生成的 URI 并粘贴到浏览器中,它有效。它只是在设备中不起作用。我还尝试将 URI 作为意图传递,以便它可以从外部打开视频 link,无论是使用股票视频播放器还是第三方播放器。也没用。

如有任何帮助,我们将不胜感激。提前致谢!

你能试试这个吗

try {
    VideoView.setVideoPath("https://user:12345@sample.com/dir1/dir2/dir3/myVideo.mp4"); 
    } catch (Exception e) {
    e.printStackTrace();
   }
   VideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    // Close the progress bar and play the video
    public void onPrepared(MediaPlayer mp) {
        //             

        VideoView.start();

    }
   });

您必须使用 setVideoURI-Method,它仅适用于反射:

Method setVideoURIMethod = videoview.getClass().getMethod("setVideoURI", Uri.class, Map.class);
setVideoURIMethod.invoke(videoview, Uri.parse(url), /*HashMap<String, String>*/ basicAuthentication;

将 basicAuthentication 替换为您的基本身份验证 Header。