2015-05-28 13 views
14

Używam pliku cookie w mojej aplikacji, który działa poprawnie we wszystkich przeglądarkach, ale w urządzeniu z Androidem plik cookie nie jest ustawiony tak szybko, jak chciałem, to zajmuje trochę czasu, zanim ciasteczko zostanie zapisane, to samo dzieje się, gdy usuwam plik cookie . Czy jest coś, co mogę zrobić, aby działało lepiej? Z góry dziękuję za odpowiedzi.CookieSyncManager jest teraz przestarzałe, co mogę zamiast tego użyć?

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); 
} 

Odpowiedz

15

Na Lollipop i poza nim, CookieManager singleton działa dobrze. (Patrz link - http://developer.android.com/reference/android/webkit/CookieManager.html) jednak przed Lollipop wymagało to również użycia dodatkowej statycznej metody z CookieSyncManager. Poniższy kod podczas ustawiania cookies na WebView pracuje dla mnie we wszystkich wersjach Androida -

CookieManager cookieManager = CookieManager.getInstance(); 
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { 
    CookieSyncManager.createInstance(this); 
} 
cookieManager.setAcceptCookie(true); 
+0

Byłbym wdzięczny, jeśli mi powiedzieć jak zapisać pliki cookies w celu ponownego użycia, jeśli aplikacja jest zamknięta (Marka cookie dostępne dla całej aplikacji)? Ładuję stronę logowania na webview i za każdym razem, gdy aplikacja jest blisko, muszę ponownie zalogować się! – user1788736

Powiązane problemy