我想知道如何正确地将视频从经过身份验证的网址显示到VideoView。我的代码在Lollipop(5.0)之前正常运行。现在,在编译到API 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作为意图传递,以便它可以在外部打开视频链接,无论是使用股票视频播放器还是第三部分。它也没有用。
任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:1)
您必须使用setVideoURI-Method,该方法仅适用于Reflection:
Method setVideoURIMethod = videoview.getClass().getMethod("setVideoURI", Uri.class, Map.class);
setVideoURIMethod.invoke(videoview, Uri.parse(url), /*HashMap<String, String>*/ basicAuthentication;
将basicAuthentication替换为您的基本身份验证标头。
答案 1 :(得分:0)
你能试试吗
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();
}
});