在WebView android中设置Cookie

在WebView android中设置Cookie,android,cookies,Android,Cookies,我正在尝试在我的WebView上设置一些cookie,以打开与我在应用程序上的会话相同的浏览器 我读了很多答案,但都不适合我。我找到的唯一解决方案是在loadUrl中,在extraHeaders中硬编码cookie数据,但正如预期的那样,这只适用于此请求,不会维护会话 我拥有的代码是: CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext()); CookieManag

我正在尝试在我的
WebView
上设置一些cookie,以打开与我在应用程序上的会话相同的浏览器

我读了很多答案,但都不适合我。我找到的唯一解决方案是在
loadUrl
中,在
extraHeaders
中硬编码cookie数据,但正如预期的那样,这只适用于此请求,不会维护会话

我拥有的代码是:

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie("http://xx.xxx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");
cookieSyncManager.sync();

String cookie = cookieManager.getCookie("http://xx.xxx.example.com");

Log.d(LOGTAG, "cookie ------>"+cookie);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new TuWebViewClient());
mWebView.loadUrl("http://xx.xx.example.com");
getCookie()
返回正确的数据,但当我从服务器读取cookie时,这些数据是空的。怎么了?请告知。
谢谢你

解决了!!!!问题在于webView,我不知道发生了什么,但是如果我创建

WebView webView = new WebView(Activity.this);
它起作用了。如果我使用
findViewById()
从活动中读取webview,它将不起作用

此外,如果您需要设置以前从网站收到的cookie列表,也可以设置。 您所要做的就是使用
for循环
遍历并设置它们。它帮助我解决了这个问题

CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());
...
cookieSyncManager.sync();
是问题的原因。你应该这样做:

CookieSyncManager.createInstance(mWebView.getContext());
...
CookieSyncManager.getInstance().sync();

而且不需要手动创建WebView…

那么,如何工作呢?你的答案我不清楚,你能解释一下吗?alex我不知道为什么,但是如果你使用findViewById的webView不起作用,如果你手动创建webView并添加到布局工作中。@flipper83我现在面临同样的问题。。你能详细解释一下你到底做了什么吗?对我来说,它是在使用findViewById()顺便说一句,谢谢:)这个CookieSyncManager.createInstance(mWebView.getContext());不知怎么帮了我。我正在向cookie同步管理器传递一些不同的上下文。谢谢。我认为这是解决这个问题的正确方法。这能使cookies在普通的网络浏览器上也能使用吗?这个问题比答案更有帮助。很好。我的工作代码和编译查询的方法