在Android中加载WebView时,如何进行/忽略错误



我正在尝试使用Android中的WebView加载URL。这就是我的Webview的样子

public class WebViewFragment extends Fragment {
private static final String LOG_TAG = WebViewFragment.class.getName();
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.web_view_fragment, container, false);
    init(rootView);
    return rootView;
}
private void init(View rootView) {
    Bundle bundle = getArguments();
    ImageView backButtonIV = (ImageView) rootView.findViewById(R.id.backButtonImage);
    backButtonIV.setOnClickListener(new PopBackStackClickListener(getActivity()));
    String title = bundle.getString(BundleConstants.WEB_HEADER_TEXT);
    TextView headerTextTV = (TextView) rootView.findViewById(R.id.pageTitle);
    headerTextTV.setText(title);
    WebView webView = (WebView) rootView.findViewById(R.id.webView);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadsImagesAutomatically(true);
    webView.setWebViewClient(new MyWebView());
    String urlToLoad = bundle.getString(BundleConstants.WEB_URL);
    Log.d(LOG_TAG, "Opening url :" + urlToLoad);
    webView.loadUrl(urlToLoad);
}
private class MyWebView extends WebViewClient {
    @SuppressWarnings("deprecation")
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
    }
    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
        return super.shouldInterceptRequest(view, request);
    }
    @Override
    public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
        super.onReceivedHttpError(view, request, errorResponse);
    }
    @TargetApi(Build.VERSION_CODES.N)
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        view.loadUrl(request.getUrl().toString());
        return true;
    }
}
}

我在OnReceivedHttperor上放了一个断点,发现有两个"找不到"错误。基本上,找不到两个.png文件。因此,WebView停止加载页面。我如何忽略这些错误并继续进行?因为在Android之外,如果我尝试打开链接,则网页加载正常,并且错误仅在控制台中登录。但这不会妨碍页面的加载。如何在Android WebView中实现相同的目标并成功加载页面?

尝试用简单的登录(不要调用super(。

尝试一下,如果您不调用超级,它应该有效:

@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
    Log.d(LOG_TAG, "onReceivedError :" + error);
}
@Override
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
    Log.d(LOG_TAG, "onReceivedHttpError:" + errorResponse);
}

最新更新