Android调用JS方法有2种

  1. 使用webView的loadUrl()方法
  2. 使用webView的evaluateJavascript()方法

JS调用Android的方法有3种

  1. 通过WebView的addJavascriptInterface()进行对象映射
  2. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url
  3. 通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt()方法回调拦截JS对话框alert()、confirm()、prompt() 消息

Android调用JS

  • 使用webview.loadUrl()方法
//打开交互权限webSettings.setJavaScriptEnabled(true);
  1. 不传参
    这是一段js代码,function是一个alert弹框
// 文本名:javascript               Carson_Ho// JS代码        

Java中使用webView直接loadUrl()

 webView.loadUrl("javascript:javaCallJs()");
  1. 传参
// 文本名:javascript               Carson_Ho// JS代码        

注意: 使用webView调用js代码时,注意js需要的参数拼接格式,双引号后面外层要包一层单引号

javascript:callJsWithParams('" + type + "','" + filePath + "')";
  • 使用webview.evaluateJavascript()方法,注意这个方法是4.4以上才支持
// 只需要将第一种方法的loadUrl()换成下面该方法即可    mWebView.evaluateJavascript("javascript:callJS()", new ValueCallback() {        @Override        public void onReceiveValue(String value) {            //此处为 js 返回的结果        }    });}

JS调用Android代码

  • 使用webView.addJavascriptInterface()方法实现JS调用Android
  1. 在webView中将JSTest的对象映射到js的Android对象上,这一步必须要这么写,至于后面的"Android",这个是跟JS后台约定好的需要映射的对象名称
//打开交互权限 webSettings.setJavaScriptEnabled(true);//  在webView中添加如下代码 mWebView.addJavascriptInterface(new webAppInterface(), "Android")
  1. 在webView中创建这个类,并在方法上使用@JavascriptInterface注解,注意这个回调需要在子线程
 public class webAppInterface{        @JavascriptInterface        public void JSTest() {            webView.post(() -> //js调用Android的回调);        }

js代码, 注意:window.Android就是约定好的映射的对象名称,JSTest是js调用的方法名称,这两个不能乱写,否则Android就不能响应JS的事件,这个坑,做项目的时候在这里一度懵逼了很久,果然细节决定成败...

function doJsTest(type) {    console.log(type);     window.Android.JSTest(type);}

其他几个方法后续更新...

更多相关文章

  1. Android ListView的item点击无响应的解决方法
  2. Android代码混淆常见配置
  3. Android 的http通信(原生代码)
  4. Android调用JNI出错 java.lang.UnsatisfiedLinkError: No implem
  5. android中使用jni,ndk的C语言回调方法
  6. [Android] 一份代码,两个版本
  7. 通过Android Studio3.5.3编译安装App失败,提示安装包异常解决方
  8. Android一键锁屏代码

随机推荐

  1. 67-Flutter中高德地图插件的使用
  2. Macaca安装配置流程
  3. [Android学UI之三]实现新浪微博消息页面
  4. Android开发之如何在App间安全地共享文件
  5. Android(安卓)ExpandableListView简单使
  6. android 自定义View绘制电池电量(电池内带
  7. android代码中打开系统设置界面 .
  8. Android(安卓)学习笔记之界面布局
  9. Android第四讲——常用的基本控件(三)Toa
  10. Android(安卓)稀奇古怪的问题