如果webview中没有互联网连接,则强制关闭应用

时间:2015-05-24 11:56:05

标签: android android-webview

使用Android WebView,如果手机没有互联网连接,如何强制关闭应用程序?

或者,如果无法做到这一点,如果用户离线,有没有办法显示404 html页面。

这是我的代码:

public class MainActivity extends Activity {

private WebView webView;
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.show_web_view);

        webView = (WebView) findViewById(R.id.webView1);

        startWebView("http://example.com/appsite/index.php");

    }

    private void startWebView(String url) {

        webView.setWebViewClient(new WebViewClient() {      
                ProgressDialog progressDialog;

                public boolean shouldOverrideUrlLoading(WebView view, String url) {              
                    view.loadUrl(url);
                    return true;
                }

                public void onLoadResource (WebView view, String url) {
                    if (progressDialog == null) {

                        progressDialog = new ProgressDialog(MainActivity.this);
                        progressDialog.setMessage("Loading...");
                        progressDialog.show();
                    }
                }
                public void onPageFinished(WebView view, String url) {
                    try{
                        if (progressDialog.isShowing()) {
                            progressDialog.dismiss();
                            progressDialog = null;
                        }
                    }catch(Exception exception){
                        exception.printStackTrace();
                    }
                }
            }); 
        webView.getSettings().setJavaScriptEnabled(true); 

        webView.loadUrl(url);
  }
}

1 个答案:

答案 0 :(得分:1)

首先,你必须尝试一些代码或更好地搜索,这个问题在这个社区已经做了很多。

嗯,下面是一些可以帮助解决问题的代码:

创建一个检查连接是否有连接的方法

public boolean hasConnectivity(Context context) {
    if (context != null) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getApplicationContext().getSystemService(
                        Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager
                .getActiveNetworkInfo();

        return networkInfo != null && networkInfo.isAvailable()
                && networkInfo.isConnected();
    } else {
        return false;
    }
}

然后,调用onCreate方法:

if (hasConnectivity(this)) {
        startWebView("http://example.com/appsite/index.php");
    } else {
        Toast.makeText(this, "you do not have connection", Toast.LENGTH_LONG).show();
}

请记住在AndroidManifest.xml中添加此权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />