Android中的Cookies和WebView缓存

来源:互联网 发布:北师大网络信息门户 编辑:程序博客网 时间:2024/06/05 18:13

原来以为两个是一样的概念,后来做需求发现不是的,webview不加载缓存时,却加载了用户信息记录,后来发现是没有清除cookies。


一、清除cookie

 public static void clearCookies(Context context) {        @SuppressWarnings("unused")        CookieSyncManager cookieSyncMngr =            CookieSyncManager.createInstance(context);        CookieManager cookieManager = CookieManager.getInstance();        cookieManager.removeAllCookie();    }


二、清除特定url的Cookies

/**   * 同步一下cookie   */  public static void synCookies(Context context, String url) {      CookieSyncManager.createInstance(context);      CookieManager cookieManager = CookieManager.getInstance();      cookieManager.setAcceptCookie(true);      cookieManager.removeSessionCookie();//移除      cookieManager.setCookie(url, cookies);//指定要修改的cookies      CookieSyncManager.getInstance().sync();  }  

 

二、清除webview缓存,要没不加载缓存,要么就直接删除目录下的db

在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/package_name目录下生成database与cache 两个文件夹。请求的url 记录是保存在WebViewCache.db,而url 的内容是保存在WebViewCache 文件夹下..

//优先使用缓存:  WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);    //不使用缓存:  WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);   
// clear the cache before time numDaysprivate int clearCacheFolder(File dir, long numDays) {      int deletedFiles = 0;     if (dir!= null && dir.isDirectory()) {         try {            for (File child:dir.listFiles()) {if (child.isDirectory()) {          deletedFiles += clearCacheFolder(child, numDays);      }if (child.lastModified() < numDays) { if (child.delete()) {               deletedFiles++;       }}}         } catch(Exception e) {   e.printStackTrace();} }   return deletedFiles; }

三、两者结合使用就是

 public void clearCache(Context context) {          CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(context);          CookieManager cookieManager = CookieManager.getInstance();          cookieManager.removeAllCookie();          context.deleteDatabase("webview.db");          context.deleteDatabase("webviewCache.db");          context.deleteDatabase("webviewCookiesChromium.db");          context.deleteDatabase("webviewCookiesChromiumPrivate.db");          //WebView 缓存文件          File webviewCacheDir = new File(context.getCacheDir().getAbsolutePath()+"/webviewCacheChromium");          //删除webview 缓存目录          if(webviewCacheDir.exists()){  //            deleteFile(webviewCacheDir);          }      }  


在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/package_name目录下生成database与cache 两个文件夹。请求的url 记录是保存在WebViewCache.db,而url 的内容是保存在WebViewCache 文件夹下..
0 0
原创粉丝点击