如何在VideoView中处理4**系列错误码?extra=-1005是否等价于404?
VideoView onErrorListener 错误码解析与404场景处理
-1005错误码的本质
extra = -1005对应的是Android MediaPlayer的MEDIA_ERROR_SERVER_DIED常量,意思是播放过程中与服务器的连接意外中断,这和HTTP 404(请求的资源不存在)是完全不同的错误类型,两者触发场景没有关联。
对应404的错误码情况
当what参数为MEDIA_ERROR_UNKNOWN(数值为1)时,extra可能会携带HTTP响应状态码,其中就包括404——这就是你要找的等价于404的场景,代表请求的视频资源不存在。
实际处理代码示例
在回调里可以这样针对性处理:
mVideoView.setOnErrorListener((mediaPlayer, what, extra) -> { if (what == MediaPlayer.MEDIA_ERROR_UNKNOWN && extra == 404) { // 处理视频资源不存在(404)的逻辑,比如提示用户视频无效 } else if (extra == -1005) { // 处理服务器连接中断的逻辑,比如提示用户网络异常 } return true; // 拦截系统默认错误提示,使用自定义处理逻辑 });
补充说明
需要注意的是,MediaPlayer并不一定会把所有HTTP错误都通过extra传递出来。如果想要更可靠地捕获404这类资源不存在的问题,建议在传入VideoView之前,先通过一个简单的网络请求(比如HEAD请求)校验URL的有效性,这样能提前过滤无效链接,避免进入播放错误流程。
内容的提问来源于stack exchange,提问作者A.Mayank Jain
相关产品推荐
相关产品推荐

