关于androidwebview的缓存问题

private void initWebView(WebView webview){
        String sdcache = getExternalCacheDir().getAbsolutePath();
        Log.i(TAG, sdcache);
        Log.i(TAG, "--------------------------------");
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptEnabled(true);                
        webSettings.setDomStorageEnabled(true);
        webSettings.setDatabaseEnabled(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAllowContentAccess(true);
        webSettings.setAppCachePath(sdcache);    
        webSettings.setDatabasePath(sdcache);
        webSettings.setCacheMode(WebSettings.LOAD_DEFAULT);        
        webSettings.setAppCacheMaxSize(1024*1024*50);
        
        webview.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // TODO Auto-generated method stub
                return super.shouldOverrideUrlLoading(view, url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                super.onPageFinished(view, url);
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                // TODO Auto-generated method stub
                super.onReceivedError(view, request, error);
            }

            @Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                // TODO Auto-generated method stub
                //super.onReceivedSslError(view, handler, error);
            }
            
            
        });
    }
    

这是设置缓存部分的代码把能设置的都设置上了 但是在DDMS中那个对应的路径下去找缓存的东西还是没有 路径是/storage/sdcard/Android/data/com.example.webviewtest/cache (用webview加载网页之后cache这个文件夹是空的)网页是没问题的。用application cache在html标签中配置了manifest="demo.appcache" 用google浏览器能看到application cache中有东西但是,第一次加载webview之后手机断网再加载webview时能被正常显示,但是就是找不到被缓存下来的东西,还有就是假如我要缓存一张a.jpg的图片 被缓存下来之后还是a.jpg吗还是是一个被加密过的文件啊,请问这是什么情况啊

阅读 2.9k
1 个回答

明明你设置的cache目录是sdcard根目录,当然在Android/data/{Package}下找不到,改一下cache目录,你就能看到cache文件了。这样定义cache路径:

String cacheDirPath = getActivity().getFilesDir().getAbsolutePath() + APP_CACHE_DIRNAME;

另外,图片缓存文件会以md5方式命名,文件不会加密。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题