Cordova 傳送接收外部廣播
#### 一、新增外掛
**新建Cordova專案**
``` cordova create CordovaHotCode com.ezample.hotcode ```
新增Android平臺
在新建專案的根目錄下,進入命令列,執行
``` cordova platform add android ```
新增廣播外掛
``` cordova plugin add cordova-plugin-broadcaster ```
#### 二、修改Broadcaster外掛檔案 **專案目錄(Android)**:platforms\android\app\src\main\java\org\bsc\cordova\CDVBroadcaster.java
``` /** * @param receiver * @param filter */ protected void registerReceiver(android.content.BroadcastReceiver receiver, android.content.IntentFilter filter) { // LocalBroadcastManager.getInstance(super.webView.getContext()).registerReceiver(receiver,filter); super.webView.getContext().registerReceiver(receiver, filter); }
/** * @param receiver */ protected void unregisterReceiver(android.content.BroadcastReceiver receiver) { super.webView.getContext().unregisterReceiver(receiver); // LocalBroadcastManager.getInstance(super.webView.getContext()).unregisterReceiver(receiver); }
/** * @param intent * @return */ protected void sendBroadcast(android.content.Intent intent) { webView.getContext().sendBroadcast(intent); // return LocalBroadcastManager.getInstance(super.webView.getContext()).sendBroadcast(intent); } ```
#### 三、JS示例程式碼
``` <script> function open_door() { receiverBroadcast(); console.log("1311event fired!"); window.broadcaster.fireNativeEvent("廣播", { boardid: 1, lockid: 1 }, function() { console.log("event fired!"); });
}
function receiverBroadcast() { console.log("register broadcast received!"); var listener = function(e) { console.log("didShow received! userInfo: " + JSON.stringify(e)); var jsonStr = JSON.stringify(e);
var objs = eval("("+jsonStr+")")
console.log(objs.contentResult +"=teststatus"); } window.broadcaster.addEventListener("廣播", listener);
} </script> ```