android - 在android中加载webview时如何继续/忽略错误?

标签 android 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 中实现相同的功能并成功加载页面?

最佳答案

尝试用简单的日志记录替换 onReceivedError 和 onReceivedHttpError 覆盖中的代码(不要调用 super)。

关于android - 在android中加载webview时如何继续/忽略错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43588859/

相关文章:

java - Android 自行旋转相机拍摄的照片

android - 在 Android Pre L 设备上使用带有 jack 编译器的 Java 8

java - 如何从另一个布局(而不是作为根布局膨胀的布局)中找到 Fragment 中的ViewById?

Android:想要在用户向上滚动时在顶部显示布局并在 webview 中向下滚动时隐藏

android-webview - 将 html 字符串拆分为多个页面

android - 文本选择的 WebView 上的灰色框问题

android - Android : Connection. getRoster().getEntries() 的 Facebook 聊天应用程序中的 Smack 问题始终为空

Android IPC最大事务大小?

android - CapacitorJS 应用程序与 Android Webview : Disable zoom

android - Nestedscrollview/Scrollview 中的 Webview 缺少内容