【android studio】解决Android上用javascript对webview的password控件赋值问题

更新时间:2019-08-21    来源:word    手机版     字体:

【www.bbyears.com--word】

在cnblogs的android客户端开中使用webview模拟登录,这样就需要将用户输入的用户名和密码传到webview上然后提交,这个过程在mx3的flyme3和flyme4上测试一切正常,然而在我的htcG12上(用的miui4),和三星note2上都报错。

报错的代码为:

 代码如下


public void LoginByPassword(String username, String password){
        mCurrentRT = EnumRequestType.LoginFinish;
        final String strJS = String.format("javascript:document.getElementById("tbUserName").value="%s";document.getElementById("tbPassword").value="%s";document.getElementById("form1").submit();", username, password);
        mWeb.post(new Runnable() {
            public void run() {
                mWeb.loadUrl(strJS);
            }
        });
    }

mWeb.loadUrl(strJS);时报错了,报错的内容为“android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application”。
解决办法,是对mWeb的settings进行设置不保存密码“settings.setSavePassword(false);”代码如下:

 

 代码如下 @SuppressLint({ "SetJavaScriptEnabled"})
private void initialWeb(){
    WebSettings settings = mWeb.getSettings();
    settings.setSavePassword(false);
    settings.setSaveFormData(false);
    settings.setJavaScriptEnabled(true);
    settings.setBlockNetworkImage(true);
    mWeb.addJavascriptInterface(new JSInterface(), "IFObj");
    mWeb.setWebViewClient(mBlogWebClient);
}

就此,原因找到了,不过“Unable to add window -- token null is not for an application”的错误,并不都是这个导致的。

本文来源:http://www.bbyears.com/bangongshuma/63532.html

热门标签

更多>>

本类排行