如何在Webview上生成错误?

时间:2018-03-02 10:48:46

标签: android webview

我为我的企业开发了一个网站,我几乎只使用PHP工作

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

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

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

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

MainActivity.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();
        }
    }

}

1 个答案:

答案 0 :(得分:0)

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