我正在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=");
答案 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的网站注销的问题。我不知道你的特定情况是否还需要其他特殊技巧。