64 votes

Faire Android WebView pas stocker des cookies ou des mots de passe

J'utilise une WebView Android pour Twitter OAuth: Twitter demande à l'utilisateur de se connecter et d'autoriser l'application, j'ai récupérer le jeton d'accès et de persister dans mon application.

Je n'ai pas besoin (ou pas) de stocker le mot de passe utilisateur, mais la WebView garde de Twitter biscuits, et il demande à l'utilisateur si il veut se rappeler le mot de passe. En conséquence de cela, même après la de-autorise l'application via son compte Twitter de la page, et mon application détruit les jetons d'accès, la prochaine fois que le WebView est ouvert, il est probablement toujours connecté, et même si ce n'est, il a le mot de passe de la boîte de déjà rempli.

Comment puis-je forcer le WebView de ne pas demander de mémoriser les mots de passe, et de ne pas persister des cookies de session? Si cela n'est pas possible, je peux supprimer tous ses stockées état (sauf peut-être l'image de cache)?

97voto

Cassio Landim Points 952

Vous pouvez utiliser ceci pour empêcher le stockage de cookies et pour nettoyer les cookies déjà stockés:

 CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptCookie(false)

WebView webview = new WebView(this);
WebSettings ws = webview.getSettings();
ws.setSaveFormData(false);
ws.setSavePassword(false); // Not needed for API level 18 or greater (deprecated)
 

34voto

mudit Points 6510

Pour ne pas sauvegarder les mots de passe:

 WebView webview = new WebView(this);
WebSettings mWebSettings = webview.getSettings();
mWebSettings.setSavePassword(false);
mWebSettings.setSaveFormData(false);
 

Pour les cookies:

 CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);
 

Je ne suis pas très sûr de la mise en place des cookies.

11voto

Junaid Points 117

En une ligne, essayez ceci. Je pense que cela devrait être appelé après le démarrage de la vue Web.

 android.webkit.CookieManager.getInstance().removeAllCookie();
 

3voto

Nivin Raj Points 1

N'effacez pas les cookies, car cela affectera d'autres sessions telles que Facebook, etc., stockées dans le cookie. Essayez donc de suivre cette méthode.

Avant une transaction comme avant la création de la vue Web

 CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);
 

Après la transaction, autorisez l'acceptation du cookie en définissant

 cookieManager.setAcceptCookie(true);
 

ça va marcher je l'ai testé ..

2voto

Sachin Gupta Points 21

J'ai utilisé la solution suivante:

 CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);
 

La méthode suivante ne fonctionne pas pour moi:

 CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
 

Une raison possible peut être que nous n'avons pas synchronisé les cookies comme suit:

 CookieSyncManager.createInstance(getContext()).sync();
 

Mais cela prend peut-être du temps.

Forcer WebView à ne pas demander de se souvenir des mots de passe ne fonctionnera pas non plus.

Et ce n'est pas bon non plus pour la facilité d'utilisation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X