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 ...
随机推荐
- js 中标签的增删 方法
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- [转]微信小程序安全浅析
本文转自:http://blog.csdn.net/baize_security/article/details/54582854 引言 近期微信小程序重磅发布,在互联网界掀起不小的波澜,已有许多公司 ...
- 远程SQL Server连接不上
运行 cmd -> 输入 netsh winsock reset重启后 应该可以连接sql了
- sublime常用设置
原文地址 https://segmentfault.com/a/1190000002596724 前言 Sublime Text3 在文中简称为ST. ST是个不错的编辑器,我用了有段时间了,所以我觉 ...
- Csharp: Send Email
/// <summary> /// 發送郵件 /// 塗聚文 /// 20130816 /// </summary> /// <param name="to&q ...
- django内置组件——ContentTypes
一.什么是Django ContentTypes? Django ContentTypes是由Django框架提供的一个核心功能,它对当前项目中所有基于Django驱动的model提供了更高层次的抽象 ...
- 18_Condition条件
[简述] wait()和notify()方法是和synchronized关键字合作使用的. Condition是和重入锁相关联的,通过ReentrantLock.newCondition()生成一个与 ...
- SharePoint 2013 - Upgrade
1. 升级到SP2013时,需要对data connection文件(UDCX文件)进行修改: 1. Mark all UDCX File (Ctrl + A) and open them. 2. F ...
- Android Studio笔记之快捷键
Android Studio h2{ color: #4abcde; } pre{ background-color: #f8f8f8; border: solid 1px #ccc; border- ...
- C/C++:函数的调用约定(Calling Convention)和名称修饰(Decorated Name)以及两者不匹配引起的问题
转自:http://blog.csdn.net/zskof/article/details/3475182 注:C++有着与C不同的名称修饰,主要是为了解决重载(overload):调用约定则影响函数 ...