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

在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

解决Android上用javascript对webview的password控件赋值问题的相关文章

Android开发之无痕过渡下拉刷新控件的实现思路详解_Android

相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下拉刷新控件普遍缺陷演示 以直播吧APP为例: 第1种情况: 滑动控件在初始的0位置时,手势往下滑动然后再往上滑动,可以看到滑动到初始位置时滑动控件不能滑动. 原因: 下拉刷新控件响应了触摸事件,后续的一系列事件都由它来处理,当滑动控件到顶端的时候,滑动事件都被下拉刷新控件消费掉了,传递不到它的子控件

Android开发之无痕过渡下拉刷新控件的实现思路详解

相信大家已经对下拉刷新熟悉得不能再熟悉了,市面上的下拉刷新琳琅满目,然而有很多在我看来略有缺陷,接下来我将说明一下存在的缺陷问题,然后提供一种思路来解决这一缺陷,废话不多说!往下看嘞! 1.市面一些下拉刷新控件普遍缺陷演示 以直播吧APP为例: 第1种情况: 滑动控件在初始的0位置时,手势往下滑动然后再往上滑动,可以看到滑动到初始位置时滑动控件不能滑动. 原因: 下拉刷新控件响应了触摸事件,后续的一系列事件都由它来处理,当滑动控件到顶端的时候,滑动事件都被下拉刷新控件消费掉了,传递不到它的子控件

Android 自定义View 三板斧之二——组合现有控件

通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 上文说过了如何继承现有控件来自定义控件,这节我们来讨论第二个议题.怎么将控件组合来实现一个功能强大的自定义控件. 先看看创建组合控件的好处吧,创建组合控件能够很好的创建具有组合功能的控件集合.那我们一般又是怎么做的了,一般我们来继承一个合适的ViewGroup,再为他创建一个新功能,从而就形成了一个新功能的控件.我们还

在android系统中如何监控可写入的控件获得焦点这样的事件

问题描述 在android系统中如何监控可写入的控件获得焦点这样的事件 在写一个手机监控程序的时候发现,需要监控用户的可输入状态.不知道有没有大神能帮忙提供些思路.这是个自主的监控程序,将会在android模拟器中运行,用作与主机进行通信.不是在真正在手机中运行的木马. 初始想法是枚举所有的窗口,然后找出哪一个窗口获得焦点,并判断此窗口是否有edit属性,嗯,PC上应该就是这样做到吧,键盘勾子是不行的,原因是不知道当前是否可输入状态.只不过在android中实在不知道该怎么做,另外,枚举的缺陷是

如何点击form2上的button3刷新form1的listView控件?

问题描述 如何点击form2上的button3刷新form1的listView控件? 解决方案 解决方案二:比较标准的方式是使用委托解决方案三:用委托吧,论坛里老曹也发过窗体间传值的文章,自己看看吧解决方案四:具体怎样写??我现在是自学的,能不能详细点说说??解决方案五://form1中写个刷新listView的函数publicvoidRefreshListView(){.......}//form1中打开form2:form2form=newform2(this);form.Show();//

解决关于ocx控件问题-高分悬赏解决:关于jsp页面不能加载ocx控件问题

问题描述 高分悬赏解决:关于jsp页面不能加载ocx控件问题 10C 首先说明下问题:我做的这个项目用的是java 页面是JSP页面 现在某个页面的票据功能需要调用外部接口,外部公司提供的有OCX控件,我在JSP页面引入控件: 在页面加载的时候会有个判断,ocx是否加载成功 !当我通过页面登录项目并访问这个页面的时候,提示说ocx加载失败,但是当我单独把JSP页面提出来并且把后缀改成html在打开的时候 就会加载成功下面上页面代码:现在求大神帮我解决!在线等....急...... 解决方案 解决

mfc-在工具栏上创建checkbox,如何响应该控件

问题描述 在工具栏上创建checkbox,如何响应该控件 m_Toolbar2.GetItemRect(index,&rectTBC); rectTBC.right += 29; skullcheck.Create("",WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX,rectTBC,&m_Toolbar2,index); 以上是我创建的checbox 可以实现创建,能选中,但不能捕捉到选中消息. 求助各位.

Android仿英语流利说取词放大控件的实现方法(附demo源码下载)_Android

本文实例讲述了Android仿英语流利说取词放大控件的实现方法.分享给大家供大家参考,具体如下: 1 取词放大控件 英语流利说是一款非常帮的口语学习app,在app的修炼页面长按屏幕,会弹出一个放大镜,当手指移到某个单词的附近,可以看到该英文单词会被选中,效果如下图所示: 2 代码示例 该控件挺有意思,于是我写了个简单的demo,完整实例代码点击此处本站下载.,程序运行后的效果如下: 3 实现原理 该控件的实现原理比较简单,下面介绍几个比较重要的类 ① WordView 在实习该控件的过程中,我

javascript-asp.net上的一个效果 不知道是哪个控件实现的,求大神告知

问题描述 asp.net上的一个效果 不知道是哪个控件实现的,求大神告知 不知道使用的控件实现的还是用的js实现的 解决方案 js第三方的开源表格,你搜一下吧,很多的 解决方案二: easyui的treegridhttp://www.jeasyui.com/demo/main/index.php?plugin=TreeGrid&theme=default&dir=ltr&pitem= 解决方案三: 用jQuery ui 也可以实现 解决方案四: asp.net 2.0下一个标准GR