如何在Webview中自动输入密码

4

我是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

替换

webView.setWebViewClient(new WebViewClient ());

webView.setWebViewClient(new MyWebViewClient ());

只有在HTTP身份验证请求时,才会调用覆盖方法onReceivedHttpAuthRequest

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


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。

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

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


谢谢回复,但这正是我之前尝试过的,它不起作用,因为它说WebView中的loadUrl(String,Map<String,String>)方法不适用于参数。 - Pirko

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

它看起来与Benjamin的答案非常相似。唯一的区别是[0]部分,选择第一个找到的元素,加上我的实现在触发JavaScript之前等待页面加载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接