Android WebView加载出错时自定义错误页面

开发中难免使用WebView加载url的情况,存在很多加载失败的原因,网络异常,404等等,这个时候会给用户展示一个机器人的错误页面,这个很不友好,一般会自己做一个页面覆盖这个错误页面,这个功能主要是通过在WebViewClient的几个方法中做处理,如下代码,需要在onReceivedError,onReceivedHttpError,onReceivedError这三个方法中做处理,需要在super之前做处理,需要注意的是很必要的一句代码是 view.loadUrl("about:blank");否则始终会出现错误页面,然后我们把自定义的view addView到WebView,就这样。

 webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                view.loadUrl("about:blank");// 避免出现默认的错误界面
                view.removeAllViews();
                int width = (int) DeviceUtils.getScreenWidth(CategoryDetailActivity.this);
                int height = (int) DeviceUtils.dip2px(CategoryDetailActivity.this, 230);
                view.addView(hintWeb, width, height);
                iv_live_cover.setVisibili
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Android WebView 实现离线加载原来的缓存页面,你可以使用以下步骤: 1. 设置 WebView 的缓存模式为 `LOAD_CACHE_ELSE_NETWORK`,这样 WebView 会优先加载缓存,如果缓存不存在才从网络加载数据。可以使用 `setCacheMode` 方法设置缓存模式: ```java webView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); ``` 2. 确保 WebView 启用了 DOM 存储和数据库存储功能,这样可以在离线仍然能够使用相关的本地存储数据。可以使用以下方法启用这些功能: ```java webView.getSettings().setDomStorageEnabled(true); webView.getSettings().setDatabaseEnabled(true); ``` 3. 在加载 WebView 的网之前,检查设备的网络连接状态。如果设备处于离线状态,你可以手动加载缓存的页面,否则 WebView 将按照缓存模式加载页面。示例代码如下: ```java ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = cm.getActiveNetworkInfo(); if (networkInfo == null || !networkInfo.isConnected()) { // 设备离线状态 webView.loadUrl("file:///android_asset/offline.html"); // 加载离线页面 } else { // 设备在线状态,WebView 根据缓存模式加载 webView.loadUrl("https://example.com"); // 加载 } ``` 在上述代码中,如果设备处于离线状态,则加载位于 assets 目录下的 offline.html 页面,你可以根据需要替换为你自己的离线页面路径。 通过以上步骤,当设备处于离线状态WebView加载之前缓存的页面,而不是尝试从网络加载新的数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值