How to move webView cache to SD?

后端 未结 2 1499
囚心锁ツ
囚心锁ツ 2021-01-12 23:21

I\'ve seen some apps like dolphin browser (not the HD version, the normal one) utilizing a cache-to-sd for webview but i can\'t seem to figure out how to do this, does anyon

相关标签:
2条回答
  • 2021-01-12 23:45

    Well, the WebSettings object has a number of set...Path() methods. It is unclear if any of them are for the actual cache. There is also the CacheManager object, which has a bunch of static methods related to the cache, but no obvious way to change the cache location.

    0 讨论(0)
  • 2021-01-13 00:03

    Here is the article which describes exactly how to change webview cache storage to use sd card: http://www.devahead.com/blog/2012/01/saving-the-android-webview-cache-on-the-sd-card/

    I've already tested it in my application and it has proven to work.

    public class MainApplication extends Application {
        // ...
    
        @Override
        public File getCacheDir() {
            // NOTE: this method is used in Android 2.2 and higher
            File cachePath = this.getExternalCachePath();
            return cachePath != null ? cachePath : super.getCacheDir();
        }
    
        private File getExternalCachePath() {
            if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
                File externalStorageDir = Environment.getExternalStorageDirectory();
                // {SD_PATH}/Android/data/com.package.name/cache
                File extStorageAppCachePath = new File(externalStorageDir, "Android" + File.separator + "data" + File.separator + this.getPackageName() + File.separator + "cache");
    
                return extStorageAppCachePath;
            }
    
            return null;
        }
    }
    
    public class SomeWebViewActivity extends Activity {
        // ...
    
        @Override
        public File getCacheDir() {
            // Android 2.1 and lower
            return this.getApplicationContext().getCacheDir();
        }
    }
    
    0 讨论(0)
提交回复
热议问题