Javascript和android原生互调
最近在做原生和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() {
@Override
public 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以后加注解,位置在这个方法名上面,鉴于很多这个的例子,瞎、、写注解位置,并需要下 //载积分写了这个
@JavascriptInterface
public 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注解的位置大家注意下。
Javascript和android原生互调的更多相关文章
- JavaScript调用App原生代码(iOS、Android)通用解决方案
实际场景 场景:现在有一个H5活动页面,上面有一个登陆按钮,要求点击登陆按钮以后,唤出App内部的登录界面,当登录成功以后将用户的手机号返回给H5页面,显示出来.这个场景应该算是比较完整的一次H5中的 ...
- PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码
PhoneGap或者Cordova框架下实现Html5中JS调用Android原生代码 看看新闻网>看引擎>开源产品 0人收藏此文章, 发表于8小时前(2013-09-06 00:39) ...
- Android-----js和android的互调
Android-----js和android的互调 http://code.google.com/p/apps-for-android/source/browse/trunk/Samples/We ...
- React Native Android原生模块开发实战|教程|心得|怎样创建React Native Android原生模块
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://blog.csdn.net/fengyuzhengfan/article/details/54691503) 告诉大家一个好消息. ...
- Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转到Android原生界面。
当时业务的需求是这样的,H5有一个活动商品列表的界面,IOS和Android共用这一个界面,点击商品可以跳转到Android原生的商品详情界面并传递商品ID: 大概就是点击H5界面跳转到Androi ...
- 将React Native集成至Android原生应用
将React Native集成至Android原生应用 Android Studio 2.1 Preview 4生成的空项目 react-native 环境 0.22.2 初次编译后apk有1.1M, ...
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
前言: 关于H5的调用Android原生方法的方式有很多,在该片文章中我主要简单介绍三种与Android原生方法交互的方式. 一.H5+方法调用android原生方法 H5+ Android开发规范官 ...
- 拓展 Android 原生 CountDownTimer 倒计时
拓展 Android 原生 CountDownTimer 倒计时 [TOC] CountDownTimer 在系统的CountDownTimer上进行的修改,主要是拓展了功能,当然也保留了系统默认的模 ...
- Android原生json和fastjson的简单使用
android原生操作json数据 主要是两个类 JSONObject 操作对象 JONSArray操作json数组 对象转json //创建学生对象 Student student=new ...
随机推荐
- Aaja.pro 未定义
问题描述:安装新系统后,将代码迁至新系统,所有用到ajaxpro框架调用ajax方法时均报“xx未定义”的错: 解决问题的过程 : 1.看看你在前台调用的方法的命名空间,方法名和后台的是否对应.在后台 ...
- C#博客记录二
1.认识运算符 我认为其中 最重要的就是逻辑运算符,对于每个人来说学习web前端就是要有一个好的思维.能够更好的运用. 2.算数运算符 变量名++意味先输出,值后增加. ++变量名意味值先增加,后输出 ...
- TCP/IP、Http、Soap三个基本的通讯协议
看到一个说法,比较通俗易懂: HTTP就是邮局的协议,他们规定了你的信封要怎么写,要贴多少邮票等.... SOAP就是你们之间交流的协议,负责把你所需要表达的意思写在信纸上,同时也负责 ...
- MongoDB windows基础配置及集群搭建
由于公司业务的发展MSSQL已处于瓶颈.因为没钱买牛逼服务器只能靠软件来实现最大优化了.原来的系统架构如下图:
- 初学Hadoop之WordCount词频统计
1.WordCount源码 将源码文件WordCount.java放到Hadoop2.6.0文件夹中. import java.io.IOException; import java.util.Str ...
- css 字体样式设置
css字体样式(Font Style),属性 时间:2014-05-08 21:49 来源:我爱学习网 | 作者:我爱学习网 | 本文已影响 68353 人 css字体样式(Font Style) ...
- java面试题----工厂模式大整理(面试问的较多)
在一次面试中了解到工厂模式在实际应用中的重要性,可以说工厂模式的应用随处可见,以下是百度百科对工厂模式的介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jiv ...
- nagios外部命令接口
http://nagios.manubulon.com/traduction/docs14en/extcommands.html https://old.nagios.org/developerinf ...
- (三)svn 服务器端之创建仓库
创建仓库 svn服务端创建完成需要创建仓库,仓库中存放 要被管理的文件. 通过开始菜单进入 VisualSVN server manager: 主界面为: 右键点击Repositories创建仓库 ...
- 记录项目代码迁移后,UI测试框架的搭建(配置文件的修改、测试脚本试运行)
前文:记录一次项目代码迁移过程 上文代码迁移的目的就是为了新增vue脚手架自带的UI测试框架,工具有了,就需要实践运行在项目中了(修改配置文件.编写测试脚本等). 一.单元测试 测试框架 karma ...