LlinkedIn无法在WebView中注销

时间:2017-09-15 14:38:23

标签: android webview linkedin

我正在WebView中加载一个URL,其中有LinkedIn登录,登录后无法注销。我已经通过以下两种方式清除了cookie,仍未解决问题。请帮忙......

方式1:

LISessionManager.getInstance(getApplicationContext()).clearSession();

方式2:

android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "bcookie=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "bscookie=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "visit=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "sl=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "lang=1");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "JSESSIONID=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "li_at=");
    android.webkit.CookieManager.getInstance().setCookie(".linkedin.com", "bcookie=");

1 个答案:

答案 0 :(得分:1)

每次我需要做的事情除了在Webview中显示一个简单的HTML页面之外,我都会疯狂。他们为每个Android版本更改/破坏了几件事,因此您必须复制每一行代码。

我必须在我的应用中清除网页浏览的Cookie,然后使用cookieManager.removeAllCookie()进行清理,这在Lollipop之后已弃用。

我还使用了webview.clearCache()。根据文档:清除资源缓存。请注意,缓存是每个应用程序,因此这将清除所有使用的WebView的缓存。因此,您不需要实际引用当前的Web视图(如果此注销是在单独的处理中非常有用应用程序的地方)。

所以我将这两个解决方案结合起来:

CookieManager cookieManager = CookieManager.getInstance();
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
            @Override
            public void onReceiveValue(Boolean value) {
                //Removed?
           }
        });
        cookieManager.flush();
    } else {
        CookieSyncManager.createInstance(this);
        cookieManager.removeAllCookie();
    }

    new WebView(getApplicationContext()).clearCache(true);

这解决了我从不同于LinkedIn的网站注销的问题。我不知道你的特定情况是否还需要其他特殊技巧。