0

Je développe une partie d'une application Android qui doit utiliser un WebView pour ouvrir un site protégé par mot de passe. J'utilise SharedPreferences pour fournir le nom d'utilisateur et le mot de passe à partir du moment où l'utilisateur se connecte à l'application pour la première fois. J'ai testé les informations d'identification qu'il retourne, donc je sais que celles-ci sont correctes. Quand je lance ceci dans l'émulateur, le site dit que je ne suis pas autorisé (même si je le suis). Voici le code:WebView.setHttpAuthUsernamePassword() ne fonctionne pas?

setContentView(R.layout.browser); 
    WebView browser = (WebView) findViewById(R.id.browser); 
    browser.getSettings().setJavaScriptEnabled(true); 
    SharedPreferences credentials = getSharedPreferences("credentials", 0); 
    browser.setHttpAuthUsernamePassword("example.com", "", credentials.getString("username", ""), credentials.getString("password", "")); 
    browser.loadUrl("http://example.com"); 

Cela veut-il que quelqu'un sait pourquoi ce ne serait pas moi authentifie? La chaîne de domaine que je mets "" devrait-elle être quelque chose?

+0

BTW, a fini par utiliser le navigateur complet pour accéder au site. – oliverwhite

+0

Extrayez la question [2585055] (http://stackoverflow.com/questions/2585055/using-webview-sethttpauthusernamepassword). Essayez de configurer un WebViewClient ... – bytebender

Répondre

0

Si le site utilise l'authentification NTLM, cela ne fonctionnera pas. Android ne prend pas en charge nativement NTLM Auth. Fennec (firefox mobile) est le seul navigateur Android que j'ai vu qui le supporte, mais c'est toujours en alpha.

+0

non, il n'utilise pas l'authentification NTLM. essayant toujours de comprendre celui-ci. Merci quand même. – oliverwhite

+1

La version Android ICS et les versions supérieures prennent en charge l'authentification NTLM. – hopia

+0

... 2 ans plus tard: S – Ben

1

Vous pouvez utiliser ceci:

webview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onReceivedHttpAuthRequest(WebView view, 
     HttpAuthHandler handler, String host, String realm) { 
      handler.proceed("username", "password"); 
    } 
}); 
+0

Cela fonctionne. Merci +1 –