我想从WebView检查"找不到404页面",如果它是404,那么我将恢复到上一页.Ty为你的帮助
编辑我想看的网页是纯.jpg 1.jpg 2.jpg 3.jpg但我不知道有多少图像存在.因此,如果有人可以提出另一种方法,欢迎他这样做.
启动SDK 23(Android M),您可以使用onReceivedHttpError
方法来捕获404和其他HTTP错误.只需覆盖你的内心WebViewClient
@Override public void onReceivedHttpError (WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { Toast.makeText(view.getContext(), "HTTP error "+errorResponse.getStatusCode(), Toast.LENGTH_LONG).show(); }
我可能要晚了几年,但这是我必须解决的问题,因为这些答案都不起作用.
我最终使用onReceivedTitle并将标题与页面标题(在本例中为"找不到页面")从我试图打开的网站进行比较.
webview.setWebChromeClient(new WebChromeClient() { @Override public void onReceivedTitle(WebView view, String title) { // TODO Auto-generated method stub super.onReceivedTitle(view, title); CharSequence pnotfound = "The page cannot be found"; if (title.contains(pnotfound)) { pagenotfound = true; view.stopLoading(); webview.loadUrl("https://www.google.com/search?hl=en&q=stackoverflow"); } } public void onProgressChanged(WebView view, int progress) { activity.setProgress(progress * 1000); } }); webview.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); } public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } public void onPageFinished(WebView view, String url) { if (dialog.isShowing()) { dialog.dismiss(); } } });
"pnotfound"将因站点而异.但通常一个站点使用相同的"页面未找到",因此您可以使用站点上的标题.如果您使用多个站点,则可能需要添加其他if.
希望它对某人有帮助.