Webview实现Android和JS通信

  • WebView
    • Android调用JS接口
    • JS调用Android接口
    • WebViewClient与WebChromeClient的区别

WebView

面试的时候被问到了,以前解过同事的bug,搞过一段时间的WebView,但忘的差不多,这里总结一下

Android调用JS接口

1.通过WebView的 loadUrl()

   //比如说调用callJS()方法,注意调用的JS方法名要对应上,缺点会使页面刷新,获取不到返回值   mWebView.loadUrl("javascript:callJS()");

2.通过WebView的evaluateJavascript()

   mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback<String>() {          @Override          public void onReceiveValue(String value) {            //此处为 js 返回的结果          }    });

JS调用Android接口

1.通过WebView的 addJavascriptInterface()进行对象映射
被JS调用的方法需要加入@JavascriptInterface注解
2.通过 WebViewClient 的 shouldOverrideUrlLoading()方法回调
拦截 url, 解析该 url 的协议,如果检测到是预先约定好的协议,就调用相应方法
3.通过 WebChromeClient 的 onJsAlert()、 onJsConfirm()、 onJsPrompt()方法
回调拦截JS警告框alert()、确认框confirm()、输入框prompt()

WebViewClient与WebChromeClient的区别

1.WebViewClient就是帮助WebView处理各种通知、请求事件的,onPageStart和onPageFinish
2.WebChromeClient主要辅助WebView处理Javascript的对话框、title、加载进度等

最近在gitbub上看见一个webview的开源项目,很好的封装了webview,分享一下github地址

更多相关文章

  1. IOS与Android的session的存储区别
  2. Android VideoView设置静音,Android 设置VideoView静音,Android
  3. ListView去掉分割线的几种方法
  4. SDK Platform Tools component is missing! Please use the SDK
  5. Android Market google play store帐号注册方法流程 及发布应用
  6. Android 实现全屏显示的几种方法整理
  7. Android中Parcelable接口的使用
  8. Android中TextView中内容不换行的解决方法

随机推荐

  1. android Camera 结构
  2. 使用Android sqlite进行模糊查询
  3. Android RadioGroup 横向显示(X行X列)
  4. 【android】用drawable xml绘制虚线分割
  5. Android各种Color值
  6. Android property系统分析
  7. android enum的简单应用
  8. App ReLoad:用Android(安卓)来控制单反相
  9. android使用.9,png图片作为背景的问题
  10. 【特效】3D旋转环形菜单