1. 程式人生 > 其它 >Android WebView—設定cookie

Android WebView—設定cookie

技術標籤:AndroidAndroid Webandroidwebviewcookie

Android中WebView載入網頁,有時候需要通過cookie向網頁傳遞資訊,如免登入儲存登入狀態等

設定cookie

在呼叫loadUrl(url);前一句呼叫以下synCookies()方法進行 Cookie 同步操作。

 /**
   * 給WebView同步Cookie
   *
   * @param context 上下文
   * @param url     可以使用[domain][host]
   */
public void synCookies(Context context,Stirng url) {
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    CookieSyncManager.createInstance(context);
  }
  CookieManager cookieManager = CookieManager.getInstance();
  cookieManager.setAcceptCookie(true);// 允許接受 Cookie
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    cookieManager.removeSessionCookie();// 移除
  } else {
    cookieManager.removeSessionCookies(null);// 移除
  }
  List<HttpCookie> cookies = UserModle.getInstance(this).getCookies();//獲取本地儲存的cookie
  for (int i = 0; i < cookies.size(); i++) {
    HttpCookie cookie = cookies.get(i);
    String value = cookie.getName() + "=" + cookie.getValue();
    cookieManager.setCookie(url, value);
  }
  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    CookieSyncManager.getInstance().sync();
  } else {
    cookieManager.flush();
  }
}

webview同步cookie位置

專案中使用 WebView 其實會自動將 Cookie 儲存在本地資料庫中。儲存是路徑為 data/data/package_name/app_WebView/Cookies 雖然不是 .db 結尾的,實際就是一個 .db 檔案

注意:如果使用騰訊X5核心,CookieSyncManager、CookieManager等引用X5的類,如圖


Android學習交流群:523487222

(如果您覺得有用,歡迎加入,一起學習進步)
點選連結加入群【Android學習群】