如何使用CookieManager删除特定域的cookie?

Pen*_*m10 6 cookies android webkit

我知道CookieManager的存在,但是如何仅删除域的cookie?

有人可以帮我一些代码片段吗?

Tom*_*aid 11

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();
}
Run Code Online (Sandbox Code Playgroud)

  • 从我做过的研究来看,你似乎需要在调用setCookie()时提供域和路径.单独传递域名对我来说不起作用,我无法找到获取给定域的cookie路径的方法 - 只需要名称和值. (4认同)

rpe*_*ich 9

呼叫android.webkit.CookieManagergetCookie方法来产生一个RFC 2109 Cookie头对你有兴趣的URL或域名.解析cookie标头以获取cookie名称列表.对于每一个cookie的名称,生成RFC 2109 Set-Cookie报头为具有在过去的到期日该名称并把它传递到CookieManagersetCookie方法.尽管API文档指定setCookie忽略已过期的值,但Android的当前实现实际上会刷新cookie.为了防止如文档中指定的那些忽略过期值未来的实现,检查甜饼实际删除,如果他们haven't-执行一些备用行为CookieManagerremoveAllCookie方法可能是这种回退有用.

  • 是的,如果你能发布一些代码,那就太好了! (4认同)