How to set cookie in android webview client

I want to name one specific URL through a WebView . A page can only be called up after the user has already logged in. I am using the AsyncHttpClient library to execute the login. After successfully logging in, loading the URL through the WebView does not seem to recognize the corresponding esp cookie headers. My suspect is that cookies do not sync correctly between HttpClient and WebView HttpClient . Any idea why ?, here is how I use WebView

final WebView webView = (WebView) content.findViewById(R.id.web_travel_advisory); String url = "http://mydomainurl.com/get_data_after_login"; webView.setWebViewClient(new WebViewClient()); CookieSyncManager.createInstance(getActivity()); CookieSyncManager.getInstance().startSync(); CookieManager.getInstance().setAcceptCookie(true); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl(url); 

Appreciate ur help

+6
source share
2 answers

Oh, after a few hours, I finally realized that it would work. Firstly CookieSyncManager depreciates in a later version of Android with api 21 according to doc.So decided not to use it anymore. Secondly, CookieManager is used to store cookies for WebView .

Final code

  CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); List<Cookie> cookies = WSHelper.cookieStore.getCookies(); cookieManager.removeAllCookie(); if (cookies != null) { for (Cookie cookie : cookies) { if (cookie.getName().contains("session")){ String cookieString = cookie.getName() + "=" + cookie.getValue() + "; Domain=" + cookie.getDomain(); cookieManager.setCookie(cookie.getDomain(), cookieString); Log.d("CookieUrl",cookieString + " "); } } } webView.loadUrl(url); 

Key changes to the solution are the use of cookie.getDomain () instead of an explicit domain.

 cookieManager.setCookie(cookie.getDomain(), cookieString); 
+13
source

Try this code after a few changes for me:

 public class WebViewActivity extends Activity{ private SharedPreferences mPreferences; String token=""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webviewpage); mPreferences = getSharedPreferences("CurrentUser", MODE_PRIVATE); } public void LaunchWebView(View view) { WebView myWebView = (WebView) findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setSaveFormData(false); CookieSyncManager.createInstance(this); CookieSyncManager.getInstance().startSync(); CookieManager cookieManager = CookieManager.getInstance(); cookieManager.setAcceptCookie(true); CookieManager.getInstance().setAcceptThirdPartyCookies(myWebView, true); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String token2= mPreferences.getString("auth_token",""); HashMap<String, String> map = new HashMap<String, String>(); map.put("x-auth-token", token); myWebView.getSettings().setAppCacheEnabled(true); myWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view,String url) { view.loadUrl(url); return true; } }); myWebView.loadUrl("YOUR_URL", map); } } 
+1
source

All Articles