Aller au contenu

Webview et Cookies


BlackHat

Recommended Posts

Hello à tous,

Voici le casse-tête que je rencontre : comment activer les cookies dans une webview ? (question en bleu, ci-après)

J'ai potassé les liens de Stackoverflow mais... cela n'a pas l'air de répondre à ce que je recherche (ou au moins, j'ai remis d'applomb quelque partie de code en checkant les points soulevés).

Extrait de l'état actuel:

webview = (WebView) findViewById(R.id.webview);


// CookieManager
CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);
CookieManager.getInstance().removeExpiredCookie();
SystemClock.sleep(500);

// Activation des Settings
webview.getSettings().setJavascriptEnabled(true);
webview.getSettings().setAllowFileAccess(true);
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}

});
CookieSyncManager.getInstance().sync();
SystemClock.sleep(600);
// Appel HTML dans la WebView
webview.loadUrl("http://uneadressecomportantduhtml5.com");

Le souci ? L'adresse en question a l'air de me répondre "please enable your cookie or local storage". Pourtant, tout a l'air d'être nickel...

J'avais vu une piste indiquant que "findViewById" provoquait des soucis. Sauf que lorsque je remplace "webview = (WebView) findViewById(R.id.webview);" par "webview = new WebView(this);", la page ne s'affiche pas...

Si vous avez une idée, une piste ou quoi que ce soit, cela serait fort agréable.

Merci par avance.

Edit: Tiens... le souci semble provenir de Javascript. Ce sujet-ci donne un cas de test simple.

En effet, une fois l'appli Android lancée et que l'URL est appelée, le fait d'arriver sur la page HTML comportant le snippet du nouveau sujet fait que lorsque l'on clique sur "Images info Bonjour", le Javascript s'active sur les navigateurs d'ordinateur fixe mais pas sous le Chromium de Google utilisé dans la WebView.

Le plus déroutant: je lance Chromium pour atteindre cette même URL et... là, le javascript fonctionne (ainsi que les cookies!). Le souci semble être dans l'utilisation du Javascript dans la WebView...

Edit² : En effet! Le titre ne peut être changé en "WebView et Javascript". Les cookies sont bien actifs. Pour afficher leur statut, la fonction Javascript "alert" a été utilisée et c'est celle-là qui est en cause : elle ne fonctionne pas dans la WebView mais fonctionne directement dans Chromium.

Edit3 : Pour ajouter la fonction Alert, on peut utiliser cette astuce ou ce lien (pour comprendre le JsAlert, suivez le lien). Pour ajouter n'importe quelle interface Javascript, c'est par ici.

Edit4 : Pour activer les cookies/storage complètement, regardez du côté de webview.getsettings().set****

Si vous utilisez les websockets, notons que le webview est comme un Android Browser (liste comparative)...

Question : pourquoi certaines fonctionnalités de Javascript sont limitées dans la WebView ? Comment retirer cette limite pour que tout cela soit identique au browser d'Android ? Certes, on peut activer certaines fonctionalités mais comment savoir si l'on a tout dans les settings ?

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...