我想从WebView检查"找不到404页面",如果它是404,那么我将恢复到上一页.Ty为你的帮助
编辑我想看的网页是纯.jpg 1.jpg 2.jpg 3.jpg但我不知道有多少图像存在.因此,如果有人可以提出另一种方法,欢迎他这样做.
Ale*_*rov 20
启动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();
}
Run Code Online (Sandbox Code Playgroud)
Lor*_*rty 15
我可能要晚了几年,但这是我必须解决的问题,因为这些答案都不起作用.
我最终使用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();
}
}
});
Run Code Online (Sandbox Code Playgroud)
"pnotfound"将因站点而异.但通常一个站点使用相同的"页面未找到",因此您可以使用站点上的标题.如果您使用多个站点,则可能需要添加其他if.
希望它对某人有帮助.
我会尝试检测 404 页面的加载。您可以通过在类shouldOverrideUrlLoading中实现方法来做到这一点WebViewClient。
mGenericWebClient = new GenericWebClient();
mWebView.setWebViewClient(mGenericWebClient);
public class GenericWebClient extends WebViewClient {
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url=="your404page.html") {
view.goBack();
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以检查当onReceivedError404 错误发生时是否出现事件。
| 归档时间: |
|
| 查看次数: |
44156 次 |
| 最近记录: |