«

webview和H5 清除缓存和缓存文件删除。

时间:2024-3-2 17:47     作者:韩俊     分类: Android


webview和H5 清除缓存和缓存文件删除。

缓存请看:http://blog.csdn.net/menglele1314/article/details/45717531

import java.io.File;

import
android.app.Activity;
import
android.graphics.Bitmap;
import
android.os.Bundle;
import
android.util.Log;
import
android.view.View;
import
android.webkit.JsPromptResult;
import
android.webkit.JsResult;
import
android.webkit.WebChromeClient;
import
android.webkit.WebSettings;
import
android.webkit.WebSettings.RenderPriority;
import
android.webkit.WebView;
import
android.webkit.WebViewClient;
import
android.widget.RelativeLayout;
import
android.widget.TextView;
import
android.widget.Toast;

public
class MainActivity extends
Activity {

private

static final
String APP_CACAHE_DIRNAME = "/webcache";

private

TextView tv_topbar_title;
private
RelativeLayout rl_loading;
private
WebView mWebView;
private
String url;

@Override 
protected

void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 


    url =

"http://www.sina.com.cn";

initView();
}

private

void initView() {

    tv_topbar_title = (TextView) findViewById(R.id.tv_topbar_title); 

  <br />

    rl_loading = (RelativeLayout) findViewById(R.id.rl_loading); 

    mWebView = (WebView) findViewById(R.id.mWebView); 

    initWebView(); 

    mWebView.setWebViewClient(new

WebViewClient() {

        @Override 
        public

void onLoadResource(WebView view, String url) {


            super.onLoadResource(view, url); 

        } 

        @Override 
        public

boolean shouldOverrideUrlLoading(WebView webview, String url) {

            webview.loadUrl(url); 

            return

true;
}

        @Override 
        public

void onPageStarted(WebView view, String url, Bitmap favicon) {



rl_loading.setVisibility(View.VISIBLE);
// 显示加载界面
}

        @Override 
        public

void onPageFinished(WebView view, String url) {

            String title = view.getTitle(); 

            tv_topbar_title.setText(title); 

            tv_topbar_title.setVisibility(View.VISIBLE); 

            rl_loading.setVisibility(View.GONE);

// 隐藏加载界面
}

        @Override 
        public

void onReceivedError(WebView view,
int errorCode, String description, String failingUrl) {

            rl_loading.setVisibility(View.GONE);

// 隐藏加载界面

            Toast.makeText(getApplicationContext(),

"",
Toast.LENGTH_LONG).show();

        } 

    }); 

    mWebView.setWebChromeClient(new

WebChromeClient() {

        @Override 
        public

boolean onJsAlert(WebView view, String url, String message, JsResult result) {


            Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); 

            result.confirm(); 

            return

true;
}

        @Override 
        public

boolean onJsConfirm(WebView view, String url, String message, JsResult result) {


            return

super.onJsConfirm(view, url, message, result);

        } 

        @Override 
        public

boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {


            return

super.onJsPrompt(view, url, message, defaultValue, result);

        } 

    }); 

    mWebView.loadUrl(url); 

} 

private

void initWebView() {

    mWebView.getSettings().setJavaScriptEnabled(true); 

    mWebView.getSettings().setRenderPriority(RenderPriority.HIGH); 

    mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); 

//设置 缓存模式选择自己想要的模式

    // 开启 DOM storage API 功能 

    mWebView.getSettings().setDomStorageEnabled(true); 

    //开启 database storage API 功能 

    mWebView.getSettings().setDatabaseEnabled(true);  

    String cacheDirPath = getFilesDir().getAbsolutePath()&#43;APP_CACAHE_DIRNAME; 



//设置数据库缓存路径

    mWebView.getSettings().setDatabasePath(cacheDirPath); 

    //设置  Application Caches 缓存目录 

    mWebView.getSettings().setAppCachePath(cacheDirPath); 

    //开启 Application Caches 功能 

    mWebView.getSettings().setAppCacheEnabled(true); 

} 

/**

 * 清除WebView缓存  在onDestroy调用这个方法就可以了<br />

 */ 
public

void clearWebViewCache(){

    //清理Webview缓存数据库 

    try

{
deleteDatabase("webview.db");

        deleteDatabase(&quot;webviewCache.db&quot;); 

    }

catch (Exception e) {

        e.printStackTrace(); 

    } 

    //WebView 缓存文件 

    File appCacheDir =

new File(getFilesDir().getAbsolutePath()+APP_CACAHE_DIRNAME);

    Log.e(TAG,

"appCacheDir path="+appCacheDir.getAbsolutePath());

    File webviewCacheDir =

new File(getCacheDir().getAbsolutePath()+"/webviewCache");

    Log.e(&quot;path===&quot;,

"webviewCacheDir path="+webviewCacheDir.getAbsolutePath());

    //删除webview 缓存目录 

    if(webviewCacheDir.exists()){ 

        deleteFile(webviewCacheDir); 

    } 

    //删除webview 缓存 缓存目录 

    if(appCacheDir.exists()){ 

        deleteFile(appCacheDir); 

    } 

} 

/**

 * 递归删除 文件/文件夹

 * 

 * @param file

 */ 
public

void deleteFile(File file) {

    Log.i(TAG,

"delete file path="
+ file.getAbsolutePath());

    if

(file.exists()) {
if
(file.isFile()) {
file.delete();

        }

else if
(file.isDirectory()) {
File files[] = file.listFiles();

            for

(int
i = 0; i < files.length; i++) {

                deleteFile(files[i]); 

            } 

        } 

        file.delete(); 

    }

else {

        Log.e(&quot;delete===&quot;,

"delete file no exists "
+ file.getAbsolutePath());
}

} 

}

标签: android

热门推荐