如何在Webview上生成错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Webview上生成错误?相关的知识,希望对你有一定的参考价值。

我为我的企业开发了一个网站,我几乎完全使用php

所以Java语言(和android studio)对我来说真的很新

尽管如此我必须创建一个APK来使用该网站(为了阻止这个网站上的Android主页)

我想知道如何生成错误以测试此功能

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)

main activity.Java

public class MainActivity extends AppCompatActivity {

    WebView webView;

    SwipeRefreshLayout swipe;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        progressBar = (ProgressBar) findViewById(R.id.awv_progressBar);
        swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
        LoadWeb();

        progressBar.setMax(100);
        progressBar.setProgress(1);


        swipe = (SwipeRefreshLayout) findViewById(R.id.swipe);
        swipe.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                webView.reload();
            }
        });


        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                progressBar.setProgress(progress);
            }
        });


        webView.setWebViewClient(new WebViewClient() {

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                progressBar.setVisibility(View.VISIBLE);
            }

            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                webView.loadUrl("file:///android_asset/error.html");
            }

            public void onPageFinished(WebView view, String url) {
                //Don't show ProgressBar
                progressBar.setVisibility(View.INVISIBLE);
                //Hide the SwipeRefreshLayout
                swipe.setRefreshing(false);
            }

        });

    }

    public void LoadWeb() {

        webView = (WebView) findViewById(R.id.webView);
        webView.getSettings().setjavascriptEnabled(true);
        webView.getSettings().setAppCacheEnabled(true);
        webView.loadUrl("mysite.com");
        swipe.setRefreshing(true);
    }

    @Override
    public void onBackPressed() {

        if (webView.canGoBack()) {
            webView.goBack();
        } else {
            finish();
        }
    }

}
答案

一种方法是通过添加代理(使用类似fiddler的应用程序),根据您对设备的所有请求的意愿返回自定义错误代码。如果您不需要特定的错误代码,只需使用实际上不存在的随机系统范围的WiFi代理。在这种情况下,设备将尝试向此代理发送数据,但无法找到它,您将在onReceivedError中获得回调。

以上是关于如何在Webview上生成错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jenkins 上生成 Gradlew?

为啥 xampp 服务器在我的本地服务器上生成错误?

在 ListView 上生成 OnClickEvent 而不实际单击项目

如何使用 SWIG 在 C++ API 上生成 C 包装器? [复制]

从另一个类调用方法在 xcode 上生成 SIGABRT 错误

如何在Android上生成Log文件