web页面与原生android通信,调用原生android方法

注册初始化方法JsBridge

javascript 复制代码
//JS注册事件监听
function connectWebViewJavascriptBridge(callback) {
	if (window.WebViewJavascriptBridge) {
		callback(WebViewJavascriptBridge)
	} else {
		document.addEventListener(
			'WebViewJavascriptBridgeReady',
			function() {
				callback(WebViewJavascriptBridge)
			},
			false
		);
	}
}

//Android主动发送消息给JS:无方法名
connectWebViewJavascriptBridge(function(bridge) {
	//初始化
	bridge.init(function(message, responseCallback) {
		var data = {
			'Javascript Responds': '我是JS的回复消息'
		};

		responseCallback(data);
	});
	//Android->签名图片
	bridge.registerHandler("test1", function(data, responseCallback) {
		var responseData = "666";
		responseCallback(responseData);
	});
})

export default {
	registerHandler: function(name, fun) {
		connectWebViewJavascriptBridge(function(jsbridge) {
			//Android调用js方法:functionInJs方法名称需要保持一致 ,并返回给Android通知
			jsbridge.registerHandler(name, function(data, responseCallback) {
				responseCallback(fun(data));
			});
		})
	},
	callHandler: function(name, data, fun) {
		connectWebViewJavascriptBridge(function(jsbridge) {
			//JS调用Android方法:接收Android传递过来的数据,并做处理
			jsbridge.callHandler(name, data, function(data) {
				fun(data);
			});
		})
	}
}

在main.js中引入注册

javascript 复制代码
import JsBridge from '@/static/JsBridge/JsBridge.js';
Vue.prototype.$jsbridge = JsBridge

使用实例

javascript 复制代码
//registerHandler监听事件
this.$jsbridge.registerHandler('test1', (data) => {
				alert(data)
			})

//callHandler触发事件
this.$jsbridge.callHandler('test2', {
					'data': "123"
				}, (data) => {
					alert(data)
				})

注意!!!监听事件需要在初始化方法JsBridge中注册才能使用

相关推荐
GIS阵地6 小时前
QgsSingleBandPseudoColorRenderer 完整详解(QGIS 3.40.13 C++)
开发语言·前端·c++·qt·qgis
爱笑鱼6 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
刘较瘦_6 小时前
AI 开发中的 Git Submodule 父子仓库模式:前后端分仓管理与协作实践
前端·github
牧艺7 小时前
cos-design WeatherBackground:用 Canvas 做一个「会变天」的背景引擎
前端·canvas·视觉设计
OpenTiny社区7 小时前
深度解析 LSP 如何为 AI 装上“眼睛”
前端·ai编程
布列瑟农的星空7 小时前
流程类SVG画布的通用开发范式
前端
fsssb7 小时前
Chromium 源码学习笔记(七):那些跨进程的调用,底下都是同一个东西——Mojo
前端
爱笑鱼7 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
MichaelJohn7 小时前
从零星白屏到“启发式缓存”,记录一次刚接手屎山的惊险排查
前端
壮哥_icon8 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化