2015-02-05 2 views
5

Ich bin ein Neuling auf Java und versuchen, die WebView Cookies Cookie :: removeAllCookies (ValueCallback Rückruf) mit dem Verfahren zu entfernen. Nicht in der Lage, herauszufinden, welche Werte an die removeAllCookie-Methode übergeben werden müssen.Wie "Cookie :: removeAllCookies (ValueCallback <Boolean> Rückruf)" verwenden

Die Dokumente https://developer.android.com/reference/android/webkit/ValueCallback.html und https://developer.android.com/reference/android/webkit/CookieManager.html#getInstance%28%29 sagen nichts darüber, wie man es benutzt.

Mein Verständnis ist ValueCallback ist ähnlich wie C++ Vorlagen. Aber nicht in der Lage zu bekommen, warum ein Objekt übergeben werden muss, um die Cookies zu entfernen.

+0

Sie die Dokumentation für diese Methode gelesen haben? – njzk2

Antwort

12

Aus der Dokumentation:

Wenn ein ValueCallback vorgesehen ist, onReceiveValue() auf dem aktuellen Threads Looper genannt werden, sobald der Vorgang abgeschlossen ist. Der für den Rückruf angegebene Wert gibt an, ob Cookies gelöscht wurden. Sie können als Callback-null übergeben, wenn Sie nicht wissen müssen, wenn der Betrieb keine Cookies abgeschlossen oder ob wurden

So entfernt man diese

CookieManager.getInstance().removeAllCookies(new ValueCallback<Boolean>() { 
      @Override 
      public void onReceiveValue(Boolean value) { 
       Log.d(TAG, "onReceiveValue " + value); 
      } 
     }); 

oder

tun können
CookieManager.getInstance().removeAllCookies(null); 

Diese Methode wird in API-Ebene 21 eingeführt. Wenn Sie ältere Versionen unterstützen, müssen Sie möglicherweise so etwas angeben.

if(API Level >= 21){ 
    CookieManager.getInstance().removeAllCookies(null); 
}else{ 
    CookieManager.getInstance().removeAllCookie(); 
} 
+0

in Ihrem Code API bezeichnet was? Ich versuche, es zu implementieren, aber zeigt in Popup für den Import wie Spiel, Sicherheitsnetz, die man wählen muss. –

0

Sie müssen es in einem Thread aufrufen.

private class RemoveCookiesThread extends Thread { 
    private final ValueCallback<Boolean> mCallback; 

    public RemoveCookiesThread(ValueCallback<Boolean> callback) { 
     mCallback = callback; 
    } 

    public void run() { 
     Looper.prepare(); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      CookieManager.getInstance().removeAllCookies(mCallback); 
     } else { 
      CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(mApplication); 
      cookieSyncManager.startSync(); 
      CookieManager.getInstance().removeAllCookie(); 
      cookieSyncManager.stopSync(); 
      mCallback.onReceiveValue(true);    
     } 

     Looper.loop(); 
    } 
} 

Und dann den Faden ab:

RemoveCookiesThread thread = new RemoveCookiesThread(callback); 
thread.start();