Malcolm Lim
Malcolm Lim

Reputation: 135

How to move webView cache to SD?

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 anyone know how to do this or point me in the right direction? Any help is greatly appreciated! Thanks :)

Upvotes: 6

Views: 3748

Answers (2)

vortexwolf
vortexwolf

Reputation: 14037

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();
    }
}

Upvotes: 6

CommonsWare
CommonsWare

Reputation: 1007399

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.

Upvotes: 1

Related Questions