最近在做原生和js端的互调的功能,自己改了个demo,给大家讲解下。
先上js代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>方法调用基本流程测试</title>
</head>
<body>
<div id="helloweb"> <div id="echoInfo">如果有数据返回,会显示在这儿</div></div><script type="text/javascript">function funFromjs(){document.getElementById("helloweb").innerHTML="HelloWebView,i'm from js";}function echoInfo( container, obj ){var domContainer = document.getElementById('echoInfo');domContainer.innerHTML = JSON.stringify( obj );}//function windowCallback( str ){//echoInfo( 'echoInfo', str );//}window.windowCallback = function( str ){echoInfo( 'echoInfo', str );};var MfsJSBridge = MfsJSBridge || undefined;if( undefined != MfsJSBridge ){//看这里var params = {id : 1,name : '测试'};var strParams = JSON.stringify( params );MfsJSBridge.invoke( 'testFunc', strParams, 'windowCallback');}else{alert('未定义MfsJSBridge');}</script></body>
</html>

android webview 设置可用javascript

//设置编码mWebView.getSettings().setDefaultTextEncodingName("utf-8");//支持js
mWebView.getSettings().setJavaScriptEnabled(true);

android 调js

mBtn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mWebView.loadUrl("javascript:funFromjs()");//其中funFromjs()为js的方法Toast.makeText(mContext, "调用javascript:funFromjs()", Toast.LENGTH_LONG).show();}});

js调原生,原生响应时间并回调数据

mWebView.addJavascriptInterface(new Object(){//注意4.4以后加注解,位置在这个方法名上面,鉴于很多这个的例子,瞎、、写注解位置,并需要下                        //载积分写了这个@JavascriptInterfacepublic void invoke(String name ,String t,String callback) {if(name.equals("testFunc")){ //其中t 为js带过来的数据          Toast.makeText(mContext, t,Toast.LENGTH_LONG).show();String strJson = "{\"code\":122, \"msg\":\"1231\", \"data\":null}";//回调数据给js 其中callback 为android 掉js 的方法名称。mWebView.loadUrl("javascript:"+ callback +"('" + strJson + "')");}//  Toast.makeText(mContext, name, Toast.LENGTH_LONG).show();}},"MfsJSBridge");

代码比较简单,最主要的是 @JavascriptInterface注解的位置大家注意下。

源码下载

转载于:https://www.cnblogs.com/forezp/p/9852223.html

Javascript和android原生互调相关推荐

  1. JS(Javascript)调用Android原生方法三步走

    三步走: 1.webview 一定要设置这三个方法 webSetting.setJavaScriptEnabled(true); webSetting.setJavaScriptCanOpenWind ...

  2. React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块...

    尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...

  3. android原生代码转h5,Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。...

    当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID:  大概就是点击H5界面跳转到Androi ...

  4. RN 封装 Android原生组件

    RN 封装 Android原生组件 背景 当在React Native暂时未提供部分原生功能或者模块,我们需要复用部分原生代码时,比如复用一个原生方法,此时就需要将原生方法进行封装,暴露出一个接口来让 ...

  5. android自定义Dcloud插件,调用android原生界面并获取返回数据

    由于工作的需要,所以我接触到了Dcloud这个我不是很愿意接触的东西.Dcloud也是Webapp的一个工具,同样也可以用来做原生android的插件.比较一下Dcloud和Cordova的优缺点: ...

  6. JS如何调用Android原生方法

    一.引入 JSBridge JSBridge 主要是给 JavaScript 提供调用 Native 功能的接口,让混合开发中的前端部分可以方便地使用 Native 的功能(例如:通讯录.蓝牙). 而 ...

  7. android原生和H5交互(转)

    最近在左一个Android原生的H5混合开发的APP,之前还没有好好的总结一下Android原生 和 H5 之间交互的方法,这里来总结一下: 1.hybrid通信,主要就是前端的js和我们Androi ...

  8. React Native 中的 Android 原生模块

    当使用 React Native 开发 Android 应用时,你可能需要使用没有被 React Native 封装的模块.但你可以使用 Java 编写原生模块,然后选择性的暴露公共接口到 React ...

  9. Android原生UI开发框架 《Jetpack Compose入门到精通》最全上手指南

    前言 在去年的Google/IO大会上,亮相了一个全新的 Android 原生 UI 开发框架-Jetpack Compose, 与苹果的SwiftIUI一样,Jetpack Compose是一个声明 ...

最新文章

  1. MPLS 成为连接到云的绝佳方法的4个原因
  2. 递归解决CSDN论坛上的小朋友分苹果问题
  3. 如何在SAP云平台的Cloud Foundry环境下添加新的Service(服务)
  4. 求最高、最低、平均分
  5. POJ-2773 欧几里得 + 二分 + 容斥
  6. 帆软与中国环境科学院合作,共同推进数字化管理建设
  7. 数据结构队列代码_代码简介:队列数据结构如何工作
  8. 华为2018春招笔试题目 字节流解析与长整数相乘
  9. mysql内外三种连接_mysql之内连接,外连接(左连接,右连接),union,union all的区别...
  10. .NET PPT控件 Spire.Presentation for .NET V2.8发布 | 附下载
  11. 扫一扫二维码,安全吗?
  12. 体检导检系统服务器系统,全科智能导检系统
  13. indiegogo众筹代理经验分享
  14. my ReadBook_baozhuangxue / baozhuanggailun / 273154301
  15. C语言实现Dijkstra算法(求解两点之间最短路径问题)
  16. 华为鸿蒙P10plus,华为P10 Plus全面评测 华为P10 Plus值不值得买
  17. 计算机网络基础:OSI模型与TCP/IP协议的关系
  18. 搜狗微信反爬虫机制探讨及应对方法
  19. 发送邮件(支持所有smtp协议邮件发送)
  20. 阿里巴巴起诉迪拜“阿里巴巴币”公司商标侵权;腾讯云发布区块链TBaaS产品白皮书;韩国将要推出区块链证券

热门文章

  1. 看风水用什么罗盘最好_兰花用什么花盆栽植最好?
  2. 不要在foreach循环里进行元素的remove/add操作。remove元素请使用iteratot方式,如果并发操作,需要对Iterator对象加锁
  3. java 虚类_java虚方法
  4. 数据库:后端开发必备的 MySQL日志文件知识点
  5. JS获取请求URL相关参数
  6. c语言从入门到精通ppt,C语言从入门到精通第1章.ppt
  7. linux kafka离线安装,centos 离线安装confluent_kafka 模块
  8. linux关机时循环输出脚本,Linux关机时执行指定脚本功能实现
  9. linxu其他用户登录mysql_Linux系统的MySQL用户如何开启远程登录权限
  10. hp-ux_UX中的格式塔-或-为什么设计师如此讨厌间距