I am trying to cache the website loaded in WebView but I can't get it working if the network connection is OFF.
Cachdirectory is created, cached files are there. Permissions are given. I load the WebPage then switch off network (WI-FI permission is also given) and I get the error as I am trying to reload the page (now it should load from cache). Plase help!
Here is the code:
WebView engine=(WebView)findViewById(R.id.web_engine);
engine.getSettings().setJavaScriptEnabled(true);
engine.getSettings().setBuiltInZoomControls(true);
engine.getSettings().setLoadsImagesAutomatically(true);
engine.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
engine.setInitialScale(1);
engine.setWebViewClient(new WebViewClient());
engine.setWebChromeClient(new WebChromeClient()
{
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(spaceNeeded * 2);
}
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle("Loading...");
activity.setProgress(progress * 100);
if(progress == 100)
{
activity.setTitle(R.string.app_name);
}
}
});
String appCachePath;
engine.getSettings().setDomStorageEnabled(true);
// Set cache size to 8 mb by default. should be more than enough
engine.getSettings().setAppCacheMaxSize(1024*1024*8);
appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
engine.getSettings().setAppCachePath(appCachePath);
engine.getSettings().setAllowFileAccess(true);
engine.getSettings().setAppCacheEnabled(true);
engine.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
cm = (ConnectivityManager) this.getSystemService(Activity.CONNECTIVITY_SERVICE);
if(cm.getActiveNetworkInfo() == null || !cm.getActiveNetworkInfo().isConnected())
{
appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
engine.getSettings().setAppCachePath(appCachePath);
engine.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
engine.loadUrl("http://www.google.com");
}
else
{
System.err.println("CACHE OR NETWROK");
engine.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
engine.loadUrl("http://www.google.com");
}
}
And Permissions:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />