我是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");
}
}
答案 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身份验证请求。