CookieManager and CookieSyncManager not syncing cookies to webview in ICS (works on all previous API levels)
I'm acquireing cookies through my app and use them internally by making requests to http. Users can switch to webview any given time, in which case I sync/inject cookies to webView.
Code for synchronizing cookies to webview using CookieSyncManager:
CookieSyncManager.createInstance(a); CookieManager cm = CookieManager.getInstance(); cm.setCookie(domain, cookieName + "=" + cookieValue); CookieSyncManager.getInstance().sync();
This works on all API levels except API 15+ (Android 4.0, Ice Cream Sandwich). The CookieManager API is not deprecated.
What is causing this problem and are there any workarounds?
You can try the Apache DefaultHttpClient to do this work for you, I don't think it been changed in Ice Cream Sandwich.
I found this sample, but there is lots more in here
I had the same problem recently which I found was my mistake. The problem was the way I set the domain (but it worked till API 15). Try to prefix the domain with the dot: ".company.com" instead of "company.com".
I wasn't injecting cookie from the client, but i found ICS cookie weren't saving.
One work around is to use the local storage instead of cookies. You don't need a cookie sync manager. this works on ics and v2+ android.
In my case I didn't have a domain , so the above didn't seem relevant - I was using a local html file in the asset folder of the app.
this works on ics and v2 android
// java WebSettings webSettings = myWebView.getSettings(); webSettings.setDomStorageEnabled(true); // localStorage // e.g., if your package is www.myapp.whatever; webSettings.setDatabasePath("/data/data/www.myapp.whatever/databases/");
Here is your answer : In ICs, can`t get cookie
Its the domain which is causing the issue.
for all version after 15+ you have to you have to use **.**domain.com , instead of domain.com.