在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”的错误,并不都是这个导致的。
时间: 2024-09-20 00:00:54