web-dev-qa-db-fra.com

CookieSyncManager est désormais obsolète, que puis-je utiliser à la place?

J'utilise un cookie dans mon application qui fonctionne bien dans tous les navigateurs, mais dans l'appareil Android le cookie ne se configure pas aussi rapidement que je le souhaitais, cela prend un certain temps jusqu'à ce que le cookie soit enregistré, même se produit lorsque je supprime le cookie. Puis-je faire quelque chose pour le faire fonctionner mieux? Merci d'avance pour vos réponses.

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);
}
18
Ioana Ab.

Sur Lollipop et au-delà, le singleton CookieManager fonctionne bien par lui-même. (Reportez-vous à Link - http://developer.Android.com/reference/Android/webkit/CookieManager.html ) cependant, avant Lollipop, il fallait également utiliser une méthode statique supplémentaire de CookieSyncManager. Le code ci-dessous fonctionne pour moi sur toutes les versions Android lors de la configuration des cookies sur une WebView -

CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Lollipop) {
    CookieSyncManager.createInstance(this);
}
cookieManager.setAcceptCookie(true);
17
DarkKnight

Activez simplement le javascript et le stockage Dom. cela m'aide à me souvenir de mes informations de connexion dans ma vue Web Android. Je n'ai pas utilisé de CookieManager, mais l'activer fait l'affaire pour moi.

 webView.getSettings().setJavaScriptEnabled(true);
 webView.getSettings().setDomStorageEnabled(true);
3
Sharoon Ck