如何在Webview中自动输入密码

时间:2013-04-17 08:59:06

标签: java android authentication passwords webclient

我是Java和Android的新手,我遇到了一个问题。 我认为解决方案可能很简单,但我无法解决。

我使用WebView创建了一个应用程序,我希望webview自动输入用户名和密码,以便用户在启动应用程序时已经登录。 我用Google搜索并发现了类似的东西,但它不起作用

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.loadUrl("https://euterpe.webuntis.com/WebUntis/index.do#main");


webView.setWebViewClient(new WebViewClient ());



class MyWebViewClient extends WebViewClient {
@Override
public void onReceivedHttpAuthRequest(WebView view,
        HttpAuthHandler handler, String host, String realm) {

    handler.proceed("Username", "password");

}
}

3 个答案:

答案 0 :(得分:0)

你好请试试这个:

webView.getSettings().setJavaScriptEnabled(true);

webView.loadUrl("javascript:document.getElementsByName('school').value = 'schoolname'");
webView.loadUrl("javascript:document.getElementsByName('j_username').value = 'username'");
webView.loadUrl("javascript:document.getElementsByName('j_password').value = 'password'");

webView.loadUrl("javascript:document.forms['login'].submit()");

第一行启用javascript

所有其他行填写表格并最终提交表格。

看看字符串撇号,请编辑我的答案。

答案 1 :(得分:0)

虽然这是一个老问题,但我认为我会发布我的解决方案:

    webView.getSettings().setJavaScriptEnabled(true);   

    webView.loadUrl("http://your.url");

    webView.setWebViewClient(new WebViewClient() {

        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:document.getElementsByName('school')[0].value = 'schoolname'");
            view.loadUrl("javascript:document.getElementsByName('j_username')[0].value = 'username'");
            view.loadUrl("javascript:document.getElementsByName('j_password')[0].value = 'password'");

            view.loadUrl("javascript:document.forms['login'].submit()");
        }
    });

本杰明的答案看起来很相似。唯一不同的是 [0] 部分,选择第一个找到的元素,加上我的实现等待页面加载之前加载javascript。

答案 2 :(得分:0)

替换

webView.setWebViewClient(new WebViewClient ());

webView.setWebViewClient(new MyWebViewClient ());

只有这样才会调用覆盖方法onReceivedHttpAuthRequest

此处理仅适用于HTTP身份验证请求。