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中注册才能使用

相关推荐
用户99045017780091 分钟前
告别广告干扰,体验极简 JSON 格式化——这款工具让你专注代码本身
前端
前端极客探险家4 分钟前
告别卡顿与慢响应!现代 Web 应用性能优化:从前端渲染到后端算法的全面提速指南
前端·算法·性能优化
EngZegNgi14 分钟前
安卓应用启动崩溃的问题排查记录
android·crash·启动崩溃
袁煦丞1 小时前
【局域网秒传神器】LocalSend:cpolar内网穿透实验室第418个成功挑战
前端·程序员·远程工作
火柴就是我1 小时前
每日见闻之Container Decoration
android·flutter
江城开朗的豌豆1 小时前
Vuex数据突然消失?六招教你轻松找回来!
前端·javascript·vue.js
天枢破军1 小时前
【AOSP】解决repo拉取提示无法连接android.googlesource.com
android
好奇心笔记1 小时前
ai写代码随机拉大的,所以我准备给AI出一个设计规范
前端·javascript
江城开朗的豌豆1 小时前
Vue状态管理进阶:数据到底是怎么"跑"的?
前端·javascript·vue.js
用户21411832636021 小时前
dify案例分享-Dify v1.6.0 重磅升级:双向 MCP 协议引爆 AI 生态互联革命
前端