回答
致電android.webkit.CookieManager
的getCookie
方法爲您感興趣的URL或域生成RFC 2109 Cookie
標頭。解析cookie標題以獲取cookie名稱列表。對於每個cookie名稱,爲該名稱生成一個RFC 2109 Set-Cookie
標題,該標題的過期日期已過期,並將其傳遞到CookieManager
的setCookie
方法中。儘管API文檔指定setCookie
忽略已過期的值,但在這種情況下,Android的當前實現實際上會刷新cookie。爲防止未來的實現忽略文檔中指定的過期值,請檢查cookie是否真的被刪除,並執行一些後備行爲,如果它們沒有 - CookieManager
的removeAllCookie
方法可能對此回退有用。
我在API中並沒有看到這樣做,但你總是可以深入到真正的源代碼中(例如,我發現這個類的deleteCookies
方法:WebViewDatabase其中是Android核心的一部分。
正如你可以看到那裏...... Cookie只是SQLite數據庫中的行...所以如果你能使這個類工作,至少你知道如何通過你自己做到這一點。
我知道這是有點老了,但我正在尋找這個自己。如果我自己修改webview.db數據庫,是否有可能發生衝突?如果CookieSyncManager或WebView在修改它時訪問它,是否存在線程安全和鎖定問題? – cottonBallPaws 2011-04-07 17:57:38
public void clearCookies(String domain) {
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
String cookiestring = cookieManager.getCookie(domain);
String[] cookies = cookiestring.split(";");
for (int i=0; i<cookies.length; i++) {
String[] cookieparts = cookies[i].split("=");
cookieManager.setCookie(domain, cookieparts[0].trim()+"=; Expires=Wed, 31 Dec 2025 23:59:59 GMT");
}
CookieSyncManager.getInstance().sync();
}
這是來自開源項目的代碼示例。也許可以幫助某人。
private static void deleteWebViewCookiesForDomain(Context context, String domain, boolean secure) {
CookieSyncManager csm = CookieSyncManager.createInstance(context);
CookieManager cm = CookieManager.getInstance();
/* http://code.google.com/p/android/issues/detail?id=19294 */
if (AndroidUtils.SDK_INT >= 11) {
// don't trim leading '.'s
} else {
/* Trim leading '.'s */
if (domain.startsWith(".")) domain = domain.substring(1);
}
/* Cookies are stored by domain, and are not different for different schemes (i.e. http vs
* https) (although they do have an optional 'secure' flag.) */
domain = "http" + (secure ? "s" : "") + "://" + domain;
String cookieGlob = cm.getCookie(domain);
if (cookieGlob != null) {
String[] cookies = cookieGlob.split(";");
for (String cookieTuple : cookies) {
String[] cookieParts = cookieTuple.split("=");
/* setCookie has changed a lot between different versions of Android with respect to
* how it handles cookies like these, which are set in order to clear an existing
* cookie. This way of invoking it seems to work on all versions. */
cm.setCookie(domain, cookieParts[0] + "=;");
/* These calls have worked for some subset of the the set of all versions of
* Android:
* cm.setCookie(domain, cookieParts[0] + "=");
* cm.setCookie(domain, cookieParts[0]); */
}
csm.sync();
}
}
- 1. 如何從使用Javascript的特定域中刪除cookie?
- 2. Android WebView從特定域中刪除Cookie
- 3. 如何使用jQuery從Cookie中刪除特定的Cookie
- 4. 如何刪除無Cookie域的Cookie
- 5. 如何刪除特定的cookie值?
- 6. 如何使用PHP或JavaScript刪除特定的Cookie前綴?
- 7. 如何使用JavaScript刪除特定網站的Cookie?
- 8. 如何設置/刪除跨域cookie?
- 9. 從CookieManager中有選擇地刪除cookie android
- 10. 未使用CookieManager的Android會話Cookie
- 11. 問題刪除指定域的Cookie
- 12. 如何從CookieManager android獲取所有cookie?
- 13. 如何刪除cookie的cookie?
- 14. 從其他域刪除cookie
- 15. 刪除Rails 3子域Cookie
- 16. 如何獲取特定cookie的域名?
- 17. 刪除特定名稱的Cookie
- 18. JS + PHP - 刪除特定的Cookie
- 19. 從cookie中刪除特定值
- 20. 如何刪除cookie
- 21. 如何清除iOS中特定域的Cookie?
- 22. 如何使用硒刪除Google Chrome Cookie?
- 23. 如何使用javascript刪除cookie
- 24. 如何使用Javascript刪除cookie?
- 25. 如何刪除所有Cookie使用jQuery
- 26. 爲PHPCrawl中的特定域設置Cookie
- 27. PHP的cookie,只爲特定子域
- 28. 如何使用硒將cookie添加到特定域
- 29. 如何使用javascript修改特定域的現有cookie值?
- 30. 如何使用硒添加cookie哪個特定域名.CreatCookie
在android中有沒有可以幫助我們的cookie解析器?或者我們應該只是做split()和我們自己? – Enigma 2012-08-31 05:34:17
@Enigma閱讀RFC,它描述了cookie字符串的確切格式。 – rpetrich 2012-09-04 01:16:23
謝謝:)它的工作原理:) – Enigma 2012-09-04 06:59:26