轉載請註明出處:https://blog.csdn.net/u011038298/article/details/84551136
1.同步內嵌頁cookie
/**
* 注意事項:
* 1.如果需要傳第三方cookie,請調用方法setAcceptThirdPartyCookies
* 2.如果這裏有多個cookie,不要使用分號手動拼接,請多次調用setCookie方法
* 3.請在WebView的setting方法完成之後,並且在loadUrl方法之前執行
* 4.請區分5.0之前和5.0之後的api調用
* https://developer.android.com/reference/android/webkit/CookieManager
* @param context
* @param url
*/
private void syncCookie(Context context, String url) {
try {
// 在上下文中創建單個CookieSyncManager
CookieSyncManager.createInstance(context);
// 獲取單例CookieManager實例
CookieManager cookieManager = CookieManager.getInstance();
// 設置應用程序的WebView實例是否應發送和接受cookie
cookieManager.setAcceptCookie(true);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// 刪除所有會話cookie
cookieManager.removeSessionCookie();
// 刪除所有cookie
cookieManager.removeAllCookie();
} else {
// 設置是否WebView應允許設置第三方cookie
cookieManager.setAcceptThirdPartyCookies(webView, true);
// 刪除所有會話cookie
cookieManager.removeSessionCookies(null);
// 刪除所有cookie
cookieManager.removeAllCookies(null);
}
String cookie = "這裏的cookie從客戶端緩存裏面取,webView與okHttp的cookie緩存共享";
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// 設置原生cookie
cookieManager.setCookie(url, cookie);
// 設置第三方cookie
cookieManager.setCookie(url, String.format("這裏填寫cookie的名稱=%s", "這裏填寫cookie的值"));
// 確保當前可通過getCookie API訪問的所有cookie都寫入持久存儲
CookieSyncManager.getInstance().sync();
} else {
// 設置原生cookie
cookieManager.setCookie(url, cookie, null);
// 設置第三方cookie
cookieManager.setCookie(url, String.format("這裏填寫cookie的名稱=%s", "這裏填寫cookie的值"), null);
// 確保當前可通過getCookie API訪問的所有cookie都寫入持久存儲
cookieManager.flush();
}
} catch (Exception e) {
}
}