Android 在web视图中插入值

Android 在web视图中插入值,android,input,android-webview,Android,Input,Android Webview,关于如何在web视图中插入值,已经有很多帖子了,但是关于语法,也有很多混淆。这里是一个简单的场景-有一个用户名和密码列表,当用户选择其中一个用户名时,用户名和密码应该插入到网页的输入框中。使用的网页是facebook.com。下面是web视图部件的代码。当从列表视图中选择用户名时,此代码激活- WebView wb; wb = (WebView) findViewById(R.id.webView1); wb.loadUrl(url); LoginActivity.this.wb.setWebV

关于如何在web视图中插入值,已经有很多帖子了,但是关于语法,也有很多混淆。这里是一个简单的场景-有一个用户名和密码列表,当用户选择其中一个用户名时,用户名和密码应该插入到网页的输入框中。使用的网页是facebook.com。下面是web视图部件的代码。当从列表视图中选择用户名时,此代码激活-

WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
    wb.loadUrl(url);
    //System.out.println("url activated 1");
    return true;
}

@Override
public void onPageFinished(WebView wb, String url) {
    // TODO Auto-generated method stub
    //System.out.println("page loading finished 1");
    wb.loadUrl("javascript:document.getElementById('email').value = '"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
我仍然不知道在webview中输入值的语法是否正确。上述代码不起作用。请帮忙

WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new OurViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}

@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value ='"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
更新问题-

链接中有两个名称标记-“”作为“电子邮件”和“名称”。我想通过单击按钮b2,从编辑文本框(如ed2和ed3)向web视图(wb)输入电子邮件和密码。我使用了以下代码-

 b2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            uname = ed2.getText().toString();
            pass = ed3.getText().toString();

            wb.loadUrl(url);
            wb.getSettings().setJavaScriptEnabled(true);
            wb.getSettings().setDomStorageEnabled(true);
            wb.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView wb, String url) {
                    wb.loadUrl(url);
                    return true;
                }
            });
            wb.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView wb, String url) {
                    // TODO Auto-generated method stub
                    wb.loadUrl("javascript:(function(){document.getElementByTagName('email').value='" + uname
                            + "';document.getElementByTagName('pass').value='" + pass + "';})()");
                }
            });
        }
    });
但它显示了两个错误-

09-15 11:59:43.555:W/BindingManager(26200):无法调用determinedVisibility()-从未看到pid:26200的连接

09-15 11:59:43.890:I/chromium(26200):[信息:控制台(1)]“未捕获类型错误:document.getElementByTagName不是函数”,来源:(1)

显然,语法有一些问题。请帮忙

WebView wb;
wb = (WebView) findViewById(R.id.webView1);
wb.loadUrl(url);
LoginActivity.this.wb.setWebViewClient(new OurViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView wb, String url) {
wb.loadUrl(url);
//System.out.println("url activated 1");
return true;
}

@Override
public void onPageFinished(WebView wb, String url) {
// TODO Auto-generated method stub
//System.out.println("page loading finished 1");
wb.loadUrl("javascript:document.getElementById('email').value ='"+uname+"';document.getElementById('pass').value='"+pass+"';");
}
});
请检查我是否已更改setWebViewClient方法。现在包括您自己的扩展WebViewClient的类,如下所示

public class OurViewClient extends WebViewClient {

public boolean shouldOverride(WebView v,String url){
    v.loadUrl(url);
    return true;

}
我试过了

getElementsByName('login')[0].submit();
但它不起作用。我试着把表格交上去,它可以正常工作

  document.getElementsByTagName('form')[0].submit();
javascript就像

 "javascript:(
             function()
             {
                document.getElementsByName('email')[0].value='"+uname+"';
                document.getElementsByName('pass')[0].value='"+pass+"';
                document.getElementsByTagName('form')[0].submit();
             })()"
这是密码

 ((Button) findViewById(R.id.button1))
            .setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        uname = ed2.getText().toString();
        pass = ed3.getText().toString();

        WebView wb;
        wb = (WebView) findViewById(R.id.webView1);

        wb.loadUrl(url);
        wb.getSettings().setJavaScriptEnabled(true);

        wb.setWebViewClient(new WebViewClient() {

        @Override
        public void onPageFinished(WebView web, String url) {
            // TODO Auto-generated method stub
            //String uname = "email@mail.com";
            //String pass = "******";               
            web.loadUrl("javascript:(function(){document.getElementsByName('email')[0].value='"
                    + uname
                    + "';document.getElementsByName('pass')[0].value='"
                    + pass + "';document.getElementsByTagName('form')[0].submit();})()");
        }
    });
 }
 });

但语法仍然不清晰。错误是“尝试完成输入事件,但输入事件接收器已被释放”@ArpitKumar检查我的答案问题是-在webview的输入框中插入值的语法是什么?你能准确地回答吗?Thanxinputbox?您指的是地址栏或网站输入框中的任何其他输入框,用户可以在其中键入值。在上面的链接,即facebook.com中,有两个输入框,一个用于电子邮件,另一个用于密码。你好,arun,我尝试了代码,但它不起作用。让我把问题改一下。非常感谢你,阿伦。如果你能添加语法来点击buttonHey arun,那就太好了。我前面提到的按钮属于facebook页面的按钮,即登录按钮。你的意思是使用facebook SDKNope。您可以在webview中查看的按钮。如何使用javascript调用按钮上的单击事件。