Android WebView自动登录

Android WebView Auto Sign In

本文关键字:登录 WebView Android      更新时间:2023-09-26

下面是我要实现的代码:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    webView = (WebView) findViewById(R.id.webTask);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);
    webSettings.setSaveFormData(false);
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
    else webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
    webView.setWebViewClient(new WebViewClient() {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            return false;
        }
        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            webView.loadUrl("javascript:document.getElementById('user_id').value='" + new String ("xxx")+ "';javascript:document.getElementById('password').value = '" + new String("xxx") + "';");

        }
    });
    webView.loadUrl(URL);

但实际上什么也没发生,网页视图变为空白,并在其左上角显示文本"xxx"

请帮助。已经搜索了3到4个小时,没有任何结果

我终于解决了这个问题。javascript没有被运行,因为我的目标sdk是>= KITKAT

所以,为了避免这个问题,你必须在API级别19或更高的设备上使用webView.evaluateJavascript(yourScript,null);

样例代码

if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
    webView.evaluateJavascript(yourScript,null);
}
else
{
    webView.loadUrl(yourScript);
}