tel*_*lob 9 phonegap-plugins cordova
我做了一个项目,在那里我建立了一个从我的蓝牙插件到我的javascript的成功通信.从我的Javascript我在java中注册回调到我的插件:
if (action.equals(ACTION_REGISTER_CALLBACK)) {
if(mJSCallback != null) {
pluginResult = new PluginResult(PluginResult.Status.ERROR, "An event callback has already been registered.");
} else {
mJSCallback = callbackId;
pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
pluginResult.setKeepCallback(true);
}
}
Run Code Online (Sandbox Code Playgroud)
这当然是在exec函数中完成的.因为事实上,蓝牙事件并非在某些时间点,我注册了一个广播接收器,它发送消息到我的javascript,例如当找到设备时.
if(BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
sendMessagetoJSCallback(new PluginResult(PluginResult.Status.OK, "Discovery finished."));
}
Run Code Online (Sandbox Code Playgroud)
发送所属的功能:
public void sendMessagetoJSCallback(PluginResult res) {
res.setKeepCallback(true);
success(res, mJSCallback);
}
Run Code Online (Sandbox Code Playgroud)
我在那个上下文中真正理解的是,setKeepCallback在那些不同的函数中做了什么.我以为会有文档,但没有.
有人能告诉我吗?我在https://github.com/phonegap/phonegap-plugins/tree/master/Android/PhoneListener上定位开发
小智 6
这意味着 JS 端的回调被保留用于从本机(Java)端到 JS 端的进一步调用。它在cordova.js 代码中管理。
如果您查看网络信息插件的示例:https : //github.com/apache/cordova-plugin-network-information/blob/master/src/android/NetworkManager.java#L221,您会在每个网络状态上看到(WIFI,3G,4G,offline,...) 插件将结果发送到 JS 并保持回调,在 JS 站点的同一个成功回调中接收到每个调用。
| 归档时间: |
|
| 查看次数: |
3610 次 |
| 最近记录: |