gpt4 book ai didi

android webview 捕获错误的 url

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:26 40 4
gpt4 key购买 nike

在我的应用程序中,我从网络服务接收作为字符串的 URL,并将其加载到 WebView。

mainContentText = (WebView) findViewById(R.id.mainContentText); 
mainContentText.getSettings().setJavaScriptEnabled(true);
mainContentText.setWebViewClient(new CustomWebClient());

mainContentText.loadUrl(url);

private class CustomWebClient extends WebViewClient{

private static final String TAG = "WebWiewActivity";

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG, "loading: " + url);
return false;
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
Log.e(TAG, String.format("*ERROR* Code: %d Desc: %s URL: %s", errorCode, description, failingUrl));
}
}

当测试 URL 不好的情况(随机字符串,url = "abc")时,我只是收到一个默认错误页面,但 onReceivedError 什么也没有而不是 shouldOverrideUrlLoading 回调并且没有异常
我怎样才能捕捉到这种情况?

最佳答案

我遇到了同样的问题,我是这样解决的:

private class CustomWebClient extends WebViewClient {

private static final String TAG = "WebWiewActivity";

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.d(TAG, "loading: " + url);
return false;
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);

*************************************
// do error handling
*************************************
}

@Override
public void onPageFinished(String url) {
// url validation
if (!Patterns.WEB_URL.matcher(url).matches()) {
*************************************
// do error handling
*************************************
}
}
}

我在onPageFinished(String url)方法中添加了一些逻辑来检查url是否有效,当url不好时可以捕获异常(一个随机字符串,url = "abc ”)。

关于android webview 捕获错误的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282742/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com