oliverwhite
oliverwhite

Reputation: 563

WebView.setHttpAuthUsernamePassword() not working?

I am developing part of an Android application that needs to use a WebView to open a password protected site. I am using SharedPreferences to provide the username and password from when the user logs in the app for the first time. I've tested the credentials it's returning, so I know that those are correct. When I run this in the emulator, the site says that I'm unauthorized (even though I am). Here's the code:

  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");

So does anyone know why this wouldn't be authenticating me? Should the realm string that I put "" for actually be something?

Upvotes: 0

Views: 4797

Answers (3)

JeKa
JeKa

Reputation: 590

You can use this:

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

Upvotes: 1

Heath Borders
Heath Borders

Reputation: 32117

Android claims to support NTLM now. I don't know if that is part of the WebView or just the browser.

https://code.google.com/p/android/issues/detail?id=4962

Upvotes: 0

Ben
Ben

Reputation: 16534

if the site is using NTLM auth it won't work. Android does not natively support NTLM Auth. Fennec (firefox mobile) is the only android browser i've seen that supports it, but its still in alpha.

Upvotes: 0

Related Questions