如何使用 Android Webview 检查链接是不是脱机或损坏?

Posted

技术标签:

【中文标题】如何使用 Android Webview 检查链接是不是脱机或损坏?【英文标题】:How to check if Link is offline or broken with Android Webview?如何使用 Android Webview 检查链接是否脱机或损坏? 【发布时间】:2016-01-25 13:26:41 【问题描述】:

我使用 android Webview 来加载这样的 URL:

mWebView = (WebView)v.findViewById(R.id.webView);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setjavascriptEnabled(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setDomStorageEnabled(true);

mWebView.loadUrl("someUrl");

如何检测 webView 应该加载的链接是否离线或损坏?

【问题讨论】:

能发个例子吗? 我的ans更新了,检查一次。 【参考方案1】:

是的,您可以在 WebViewClient 类中使用 onRecicedError() 检测 WebView 中的断开链接。

您必须为 WebViewClient 创建一个对象并实现 onRecicedError() 方法并在 WebView 中使用 setWebViewClient() 方法设置 WebViewClient 对象

例如:

webView.setWebViewClient(new WebViewClient() 
  @SuppressWarnings("deprecation")
  @Override
  public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) 
      if(errorCode == 404)
             Log.d("Webview", "Invalid URL: "+url);
      
      else if(errorCode == 500)
           Log.d("Webview", "Internal Server error: "+url);
      
  

  @TargetApi(android.os.Build.VERSION_CODES.M)
  @Override
  public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) 
    // Redirect to deprecated method, so you can use it in all SDK versions
    onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
  
);

【讨论】:

@confile 让我知道我的答案中的任何疑问。 如果是 404 之类的,我如何检查状态码? @confile 使用 onReciceive() 2nd Argument errorCode, 您能否将此添加到您的答案中。 @confile 更新了我的回答。检查它是否已解决,然后标记它已解决。

以上是关于如何使用 Android Webview 检查链接是不是脱机或损坏?的主要内容,如果未能解决你的问题,请参考以下文章

android – 如何检查 webview 是不是可用?

android中,如何屏蔽WebView里的超链接?

Android WebView

检查 Android WebView 是不是正在使用触摸事件

如何在 Android WebView 中使用 HitTestResult 获取链接 URL,用于使用 Longclick 链接图像(而不是图像 URL)

Android WebView 触摸事件链接