• Android-WebView路由登录192.168.1.1


    由于项目需求制做路由器的登录,有的路由可以直接打开网页登录,有的是打开的登录窗

    我们的路由是打开的登录窗口,我在自己写的时候用WebView打不开登录窗

    在网上搜索的答案是
    WebView.setHttpAuthUsernamePassword(host, realm, username, password)
    WebView增加WebChromeClient重写onJsAlert
    发现以上办法都不能解决问题
     
    用浏览器打开的时候会弹出登录框,当我用Android WebView登录的时候提示登录失败
    打不开登录框,一开始我以为是js生成的弹出框
    试验给WebView setWebChromeClient 
    重写 WebChromeClient 中的
    public boolean onJsAlert(WebView view, String url, String message, JsResult result) 
    public boolean onJsConfirm(WebView view, String url, String message, JsResult result)
    public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)
    public boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result)
    public boolean onJsTimeout()
    发现以上方法没有一个执行到了
    然后我在对比火狐,IE,Google Chrome感觉是浏览器自己做的
    浏览器打开的时候会提示输入用户名和密码
     
    发现WebViewClient中有一个方法 onReceivedHttpAuthRequest
    然后查看源码
    public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { 
            handler.cancel();
    }
    发现是直接调用的 handler.cancel();
    给WebView增加WebViewClient 重写 onReceivedHttpAuthRequest 将此方法置空
    发现登录的时候会停止在一个空白页面,等待处理,并没有像开始直接打开的时候提示登录失败
     
    然后查看onReceivedHttpAuthRequest中的参数有一个HttpAuthHandler 
    源码默认是调用的cancel() 发现还有一个方法 proceed(String username, String password)
     
    然后在重写 onReceivedHttpAuthRequest时
    public void onReceivedHttpAuthRequest(WebView view,  HttpAuthHandler handler, String host, String realm) { 
            handler.proceed("admin", "admin");
    } // PS: admin 是我路由器默认的帐号和密码

    然后就登录进去了我的路由器,问题到这里已经解决

    onReceivedHttpAuthRequest这个方法也是在主线程中的,可以在这里制做自己的登录窗口

  • 相关阅读:
    Collections之sort、reverse
    网页小实验——在平面空间建立大量“可思考的”对象
    3D网页小实验——将txt配置文本转化为3D陈列室
    原生JavaScript实现一种日历
    JavaScript实现竖向滚动条的一种思路
    一个原生JavaScript动画库原型
    html小工具——文章注释编辑器
    基于Babylon.js编写宇宙飞船模拟程序1——程序基础结构、物理引擎使用、三维罗盘
    WebGL场景的两种地面构造方法
    基于Babylon.js编写简单的骨骼动画生成器
  • 原文地址:https://www.cnblogs.com/smile365/p/4130983.html
Copyright © 2020-2023  润新知