cordova 是构建 hybrid 应用的框架,原理大概就是一个app里面嵌套了一个网页,通过网页和app之间的通信,达到普通网页不能实现的效果:比如获取到电池的信息,获取 wifi 的连接情况等
网页 向 app 主动请求数据的代码在官方的demo里面就有,一个exec 函数带两个回调就解决了,只有网页端发起请求后,它类似于 http ,服务器才能返回信息,这是十分不方便的
因为有的时候 app 里面会有一些数据会主动的发出来,而网页需要随时地去就收
为了找这段代码,我找了大概一周的文档和技术博客
话不多说, 看代码:
这是写在插件里面的 java 代码
关键部分的代码 是webView.loadUrl("javascript:sendData(" + s + ");");
这有点儿类似于直接写在 html 里面的j s 代码
发送出去的数据是拼接成的一个符合 json 格式的字符串
public void sendMsg(final String dataType, final String data) {
cordova.getActivity().runOnUiThread(new Runnable() {
public void run() {
String s = "{" + dataType + ":" + data + "}";
webView.loadUrl("javascript:sendData(" + s + ");");
}
});
}
这是在网页中的 js 代码
window.sendMsg = function(data) {
// 这里就拿到数据了
}
网友评论