自动填充字段在web视图android

Autofill fields in web view android

本文关键字:web 视图 android 字段 填充      更新时间:2023-09-26

我正在创建一个在webview中显示外部网站的应用程序。我想用我的自定义值填充该web视图的用户名和密码字段,但我没有找到任何成功这样做:

这是网站页面的源代码片段:

<form name="LoginForm" method="post" action="https://xyz" onsubmit="document.LoginForm.Submit.disabled=true;">
    <input type=hidden name="XXX" value="@@@@www@">
    <input type=hidden name="YYY" value="xyz.0">
            <tr>
            <td width="50%">Username
                <font class=starmand align="absmiddle">*</font></td>
            <td width="50%"><input type="text" name="userName" class="txtfld" autocomplete="off" size="12"/>
              </td>
          </tr>
            <tr>
            <td>Password
                <font class=starmand align="absmiddle">*</font></td>
            <td><input type="password" name="password" size="12" value="" class="txtfld">
              </td>
          </tr>
            <tr>
            <td align="right" colspan="2"><input type="submit" name="Submit" value="GO" onclick="return xyz();" class="btnSubmit"></td>
          </tr>
          </table></td>
  </table>
  </tbody>
</form>

下面是我的Android代码片段:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    browser = (WebView)findViewById(R.id.webView1);
    browser.setWebViewClient(new MyBrowser());
    browser.getSettings().setLoadsImagesAutomatically(true);
    browser.getSettings().setJavaScriptEnabled(true);
    browser.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    browser.loadUrl(AppConstants.LOGIN_URL);
}

private class MyBrowser extends WebViewClient {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        String TAG="onPageFinished";
        Logger.i(TAG,"Called..");
        if(url.equals(AppConstants.LOGIN_URL)) {
            Logger.i(TAG,"Login page load done..");
            updateStatus("Login Page Loaded..!",TYPE_GREEN);
            browser.loadUrl(getLoginScript("USER_NAME","PASS_WORD"));
        }
    }
}
public static String getLoginScript(String userName,String password){
    return "javascript: {" +
            "document.getElementsByName('userName').value = '"+userName +"';" +
            "document.getElementsByName('password').value = '"+password+"'; };";
}

在运行上述代码时:

-I得到一个新的web页面的文本为USER_NAME

请帮帮我!

我需要让这个工作…

看起来您正在将其加载为默认的"USER_NAME"。对我来说,如果用文本"USER_NAME"填充字段会更有意义,因为您将该字符串作为如下参数传递:

browser.loadUrl(getLoginScript("USER_NAME","PASS_WORD"));