2014-01-14 54 views
0
CookieSyncManager.createInstance(getApplicationContext()); 
CookieManager.getInstance().setAcceptCookie(true); 
webView = (WebView)findViewById(R.id.webView1); 
CookieSyncManager.getInstance().sync(); 

而且使用只是嘗試:的WebView根本不會接受cookies

CookieManager.getInstance().setAcceptCookie(true); 

在每一個地方想象,然而IM仍然無法使其接受cookies?這是怎麼回事??

+0

我有同樣的問題 –

+0

嘗試CookieSyncManager.createInstance(getApplicationContext())之前,移動web視圖初始化;我不知道爲什麼我記得這樣。另外我想你知道,當你離開活動 – Alex

+0

@Alex nope時,cookies不會被保存,同樣的問題 – Broak

回答

2

我有同樣的問題。嘗試了stackoverflow上的所有答案的幾個組合,但WebView只是簡單地忽略cookie。

終於爲我工作的解決方案是使用CookieManager手動設置cookie。

最初,我在CookieManager上調用setCookie()時出現錯誤的url,並且我的WebView仍然忽略了Cookie。你需要找到正確的網址,這可能是你要調用webView.loadUrl(url)的URL的域名。如果您的webview執行多個重定向,則可能需要嘗試使用不同的域來找到正確的cookie來設置cookie。我必須將其設置爲出現在其中一個重定向中的域,而不是我稱之爲webView.loadUrl(url)的url域。

final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(context); 
final CookieManager cookieManager = CookieManager.getInstance(); 
cookieManager.setAcceptCookie(true); 
cookieManager.removeSessionCookie(); 

//Set the cookies one by one. You might extract these cookies from the headers like I did. 
//They were saved under the key "Set-Cookie". Or you might extract them from the http 
//client like so httpclient.getCookieStore().getCookies() depending on your implementation. 
// Assuming you have List<String> cookies to work with: 
for (String cookie : cookies) 
{     
    cookieManager.setCookie("http://exampledomain.com", cookie.split(";")[0]); 
} 
cookieSyncManager.sync(); 
webView.loadUrl(url);