安卓监听WebView加载失败以及获取WebView异常的errorCode和errorMessage

在Android开发中,当使用WebView加载网页时,可能遇到加载失败的情况。为了解决这个问题,我们需要监听onReceivedError方法来处理异常。对于Android6.0及以上版本和低于6.0的版本,该方法的回调有所不同。文章展示了如何根据AndroidSDK版本来适配不同的onReceivedError方法,同时列举了常见的errorCode及其含义。

在使用WebView中,我们不可避免的会接触到WebView加载失败的异常处理的需求,这时候,需要我们监听失败的方法也就是onReceivedError方法:
 

  public class CustomWebViewClient extends WebViewClient {

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            super.onReceivedError(view, request, error);
            if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                int errorCode = error.getErrorCode();
                String errorMessage = error.getDescription().toString();
                Log.i("CustomWebViewClient", "onReceivedError  errorCode : " + errorCode + " errorMessage : " + errorMessage);
            }
        }

        @Override
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            super.onReceivedError(view, errorCode, description, failingUrl);
            if (android.os.Build.VERSION.SDK_INT < Build.VERSION
### 通过调试工具定位 UniApp WebView 加载失败的具体原因 在 UniApp 中,若 WebView 加载失败,可以借助调试工具来定位问题。以下是详细的解决方案方法: #### 使用 HBuilderX 调试工具 HBuilderX 提供了强大的调试功能,能够帮助开发者快速定位 WebView 加载失败的原因。具体操作如下: - **启用调试模式**:确保在项目中启用了调试模式。可以通过 `plus.webview.currentWebview().setDebug(true);` 来开启 WebView 的调试功能[^1]。 ```javascript // 开启调试模式 plus.webview.currentWebview().setDebug(true); ``` - **检查网络请求**:在 HBuilderX 的调试面板中,查看网络请求的详细信息,包括状态码、响应头响应体等。如果发现某些资源加载失败,可以根据错误提示进行排查。 #### 使用 Chrome DevTools 对于基于 WebView 的页面,也可以使用 Chrome DevTools 进行调试。具体步骤如下: - **连接设备**:将 Android 设备与电脑连接,并确保设备上的应用允许 USB 调试。 - **打开 Chrome 浏览器**:在地址栏输入 `chrome://inspect`,找到对应的 WebView 页面并点击“Inspect”按钮。 - **分析加载过程**:在 DevTools 中,切换到“Network”标签页,观察所有资源的加载情况。如果某个资源加载失败,可以查看具体的错误信息(如 404 或 CORS 问题)[^2]。 #### 检查加载事件 在 UniApp 中,可以通过监听 WebView加载事件来捕获加载失败的信息。例如,监听 `error` 事件以获取加载错误的详细信息。 ```javascript // 创建 WebView监听加载事件 const webView = plus.webview.create('https://example.com', 'webview'); webView.addEventListener('error', function(e) { console.error('WebView 加载失败:', e.message, e.detail); // 输出错误信息 }); ``` #### 配置基础库版本 在微信开发者工具中,基础库版本可能会影响 WebView加载行为。如果本地测试时无法获取加载 URL,可以尝试调整基础库版本。建议选择 2.21.4 到 2.24.7 之间的版本,因为这些版本更稳定且兼容性较好[^1]。 ```javascript // 在微信开发者工具中调整基础库版本 uni.getSystemInfo({ success: (res) => { console.log('当前基础库版本:', res.SDKVersion); } }); ``` #### 真机调试 在真机调试时,如果仍然无法获取加载 URL,可以尝试将调试基础库推送到手机端。确保手机端电脑端使用同一个微信账号登录,并重新启动真机调试。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张海龙_China

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值