los - ¿Cómo borrar las cookies y el caché de webview en Android cuando no está en webview?
como borrar cookies de youtube en android (4)
Acabo de tener el mismo problema. Necesitaba eliminar todas las cookies porque no quería conservar las antiguas y no quería utilizar el método obsoleto.
Aquí la documentación:
http://developer.android.com/reference/android/webkit/CookieManager.html
Y aquí el método:
public abstract void removeAllCookies (devolución de llamada de ValueCallback)
En tu caso:
cookieManager.removeAllCookies(null);
Debería hacer el trabajo. Si con "nulo" no funciona, entonces debe usar una devolución de llamada * ...
Eventualmente, puede encontrar una respuesta aquí: Problema de cookies de WebView de Android
Espero que esto ayude. Salud
Al cerrar la sesión de un usuario desde mi aplicación, estoy borrando todo lo que puede haberse almacenado en caché previamente de la vista web llamando a este método:
public void clearCookiesAndCache(Context context){
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(null);
}
else {
cookieManager.removeAllCookie();
}
}
Sin embargo, CookieSyncManager está marcado como obsoleto. Sin embargo, es necesario llamar a CookieSyncManager.createInstance (contexto) si no ha cargado la vista web anteriormente. Entonces, ¿cómo se supone que debemos borrar las cookies y el caché sin usar el CookieSyncManager en desuso en los casos en que la vista web puede no haberse cargado previamente?
Estoy usando esto ...
public static void clearCache() {
new WebView(getApplicationContext()).clearCache(true);
}
Tenga cuidado de llamarlo en un subproceso de interfaz de usuario, de lo contrario obtendrá una excepción.
Trabajando y probado ..
android.webkit.CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.removeAllCookies(new ValueCallback<Boolean>() {
// a callback which is executed when the cookies have been removed
@Override
public void onReceiveValue(Boolean aBoolean) {
Log.d(TAG, "Cookie removed: " + aBoolean);
}
});
}
else cookieManager.removeAllCookie();
Utilizo el siguiente enfoque en mi aplicación:
@SuppressWarnings("deprecation")
public static void clearCookies(Context context)
{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
Log.d(C.TAG, "Using clearCookies code for API >=" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1));
CookieManager.getInstance().removeAllCookies(null);
CookieManager.getInstance().flush();
} else
{
Log.d(C.TAG, "Using clearCookies code for API <" + String.valueOf(Build.VERSION_CODES.LOLLIPOP_MR1));
CookieSyncManager cookieSyncMngr=CookieSyncManager.createInstance(context);
cookieSyncMngr.startSync();
CookieManager cookieManager=CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.removeSessionCookie();
cookieSyncMngr.stopSync();
cookieSyncMngr.sync();
}
}
Llamo a este método de la siguiente manera desde mi fragmento:
mWebView.clearCache(true);
mWebView.clearHistory();
U.clearCookies(getActivity());
mWebView.loadUrl(authorizeURL);
Es posible volcar las cookies de un dominio antes y después de la llamada a
clearCookies
por
String yahooCookies = CookieManager.getInstance().getCookie("https://yahoo.com");
Log.d(C.TAG, "Cookies for yahoo.com:" + yahooCookies);
Después de llamar a
clearCookies
yahooCookies será
null
.
Esta implementación satisface mis necesidades, la he probado en varios emuladores y en un Samsung Galaxy Gio prehistórico con Android 2.3.3 y Nexus 5 con Android 5.1.1.