在WebView中强制关闭 - 当它处于脱机状态时无法正常工作

时间:2013-01-02 04:23:49

标签: android android-layout android-intent android-widget android-webview

我想在线显示网站。当它处于离线模式时,它应该显示缓存的网站。我创建,但是当它在线时它正在工作。但是当它处于离线状态时,它会导致强制关闭。我不知道我在哪里犯错。请帮助我。< / p>

编码如下:

    w=(WebView)findViewById(R.id.webView1);
    enableHTML5AppCache();
}

private void enableHTML5AppCache() {    
      w.getSettings().setAppCacheMaxSize(1024*1024*8);
      w.getSettings().setAppCachePath("/data/data/"+ getPackageName() +"/cache");
      w.getSettings().setAllowFileAccess(true);
      w.getSettings().setAppCacheEnabled(true);
      w.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
      cm = (ConnectivityManager)this.getSystemService(Activity.CONNECTIVITY_SERVICE);

      if(cm.getActiveNetworkInfo().isConnected())
         {
                w.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
            w.setInitialScale(1);
                w.loadUrl("http://www.google.com/");
         }
      else
         {
              w.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
              w.loadUrl("http://www.google.com/");
         }
}

在清单文件中,我也使用了权限

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

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

1 个答案:

答案 0 :(得分:0)

当没有网络可用时,

cm.getActiveNetworkInfo()可以等于null

你需要像这样检查网络

if(cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnected()) 

请参阅此Link