WebView caching data directory?

In my code, I have my own cache directory set to SDCard, and I point "WebView.getSettings (). SetAppCachePath (" ") to this path, but the OS sends the cache to the default cache (/ data / data / com .your.package.appname / cache). The user directory is created correctly where it should be, but the data does not fall into it. The reason I use the custom directory is that the cache will be large and temporary, so I need to the user could delete certain caches.

Am I missing something? Any help, code or suggestions would be appreciated as always.

Thank you.

public class DocumentView extends Activity { /** * -- Called when the activity is first created. * ================================================ **/ @Override public void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); String l = getIntent().getStringExtra("LABEL"); CreateCacheDirectory(); /** * -- Set up the WebView * ======================================================== **/ final String url = getIntent().getStringExtra("url");// get url that // passed from // previous // Activity mWebView = (WebView) findViewById(R.id.webView1); mWebView.getSettings().setDomStorageEnabled(true); // Set cache size to 8 mb by default. should be more than enough mWebView.getSettings().setAppCacheMaxSize(1024 * 1024 * 8); // The DEFAULT location for the cache mWebView.getSettings().setAppCachePath(extStorageDirectory + "/myCompany/myApp/cache/" + l); mWebView.getSettings().setAllowFileAccess(true); mWebView.getSettings().setAppCacheEnabled(true); mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); mWebView.loadUrl(url); mWebView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setProgress(progress * 100); pd.show(); if (progress == 100) pd.dismiss(); } @Override public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) { quotaUpdater.updateQuota(spaceNeeded * 2); } }); mWebView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { // The redirect if (url.equals(failingUrl)) { // error.html is the place we are redirected to by the // server if we are online mWebView.loadUrl("http:www.aero-technologies.us/error.html"); return; } else if (url.equals(failingUrl)) { // The cache failed – We // don't have an offline // version to show // This code removes the ugly android "can't open page" // and simply shows a dialog stating we have no network view.loadData("", "text/html", "UTF-8"); // TODO -->showDialog(DIALOG_NONETWORK); } } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); public void CreateCacheDirectory() { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) { String l = getIntent().getStringExtra("LABEL"); extStorageDirectory = Environment.getExternalStorageDirectory() .toString(); File cacheDirectory = new File(extStorageDirectory + "/myCompany/myApp/cache/" + l);// Create a Folder object // for the parent // directory cacheDirectory.mkdirs();// Have the object build the folder // if needed. } else if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED_READ_ONLY)) { Alerts.sdCardMissing(this); } } 
+1
source share
1 answer

From what I could tell by reading the WebSettings code, the cache setting in WebSettings is only for HTML5 applications:

http://www.grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.3_r1/android/webkit/WebSettings.java#181

+2
source

All Articles