Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CookieSyncManager is now deprecated, what can I use instead?

Tags:

I'm using a cookie in my app which works fine in all browsers, but in android device the cookie is not setting as fast as I wanted, it takes some time until cookie is saved, same is happening when I delete the cookie. Is there anything I can do to make it work better? Thank in advance for your answers.

protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      webview = new WebView(this);     webview.getSettings().setJavaScriptEnabled(true); // enable javascript      CookieManager.setAcceptFileSchemeCookies(true);     CookieManager cookieManager = CookieManager.getInstance();     cookieManager.setAcceptCookie(true);     cookieManager.acceptCookie();     String cookie = CookieManager.getInstance().getCookie("mylink");      final Activity activity = this;      webview.setWebViewClient(new WebViewClient() {         public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {             Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();         }     });     webview.loadUrl("mylink");      setContentView(webview); } 
like image 842
Ioana Ab. Avatar asked May 28 '15 09:05

Ioana Ab.


1 Answers

On Lollipop and beyond, the CookieManager singleton works fine by itself. (Refer Link - http://developer.android.com/reference/android/webkit/CookieManager.html) however, prior to Lollipop it also required the use of an additional static method from CookieSyncManager. The code below works for me on all Android versions when setting the cookies on a WebView -

CookieManager cookieManager = CookieManager.getInstance(); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {     CookieSyncManager.createInstance(this); } cookieManager.setAcceptCookie(true); 
like image 111
DarkKnight Avatar answered Sep 22 '22 10:09

DarkKnight