Why does Android WebView sporadically not sending my session cookie?
Thanks justingrammens! That worked for me, I managed to share the cookie within my DefaultHttpClient requests and WebView activity:
//------- Native request activityprivate DefaultHttpClient httpClient;public static Cookie cookie = null;//After LoginList<Cookie> cookies = httpClient.getCookieStore().getCookies();for (int i = 0; i < cookies.size(); i++) { cookie = cookies.get(i);}//------- Web Browser activityCookie sessionCookie = myapp.cookie;CookieSyncManager.createInstance(this);CookieManager cookieManager = CookieManager.getInstance();if (sessionCookie != null) { cookieManager.removeSessionCookie(); String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain(); cookieManager.setCookie(myapp.domain, cookieString); CookieSyncManager.getInstance().sync();}
Thanks Android for ruining my Sunday . . . Heres what fixed my Apps ( after you init your webview )
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP ) { CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptThirdPartyCookies( webView, true );}
I should say the above answers will probably work but in my situation the moment Android went v5+ my android webview javascript 'apps' died.
Solution:Webview CookieSyncManager
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mWebView.getContext());CookieManager cookieManager = CookieManager.getInstance();cookieManager.setAcceptCookie(true);cookieManager.removeSessionCookie();cookieManager.setCookie("http://xx.example.com","mid="+MySession.GetSession().sessionId+" ; Domain=.example.com");cookieSyncManager.sync();String cookie = cookieManager.getCookie("http://xx.example.com");Log.d(LOGTAG, "cookie ------>"+cookie);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.setWebViewClient(new TuWebViewClient());mWebView.loadUrl("http://xx.example.com");