Skip to content

广播模块

集成和使用ESBroadcastModule模块。

  • ESBroadcastManager是对ESBroadcastModule进一步封装。
  • 开发者可以直接使用ESBroadcastModule。建议直接使用ESBroadcastManager

集成

package.json引入库

点击查看源码
js
"@extscreen/es-core": "^x.x.x"

发送广播

示例代码

点击查看源码
js
let paramsArray = [
    ['-a', 'android.intent.action.TEST_BC'],
]
ESBroadcastManager.sendBroadcast(paramsArray)

注册广播接收者

点击查看源码
js
let receiverIntentFilter = {
    action: [
      'android.intent.action.TEST_BC_A',
    ],
  }
ESBroadcastManager.registerReceiver(this, receiverIntentFilter)
    .then((() => {
        ESToast.showToast("注册广播成功!")
      }),
      error => {
        ESToast.showToast("注册广播失败!")
      })

取消注册广播接收者

当广播不再使用,需要取消注册广播接受者。

点击查看源码
js
let receiverIntentFilter = {
    action: [
      'android.intent.action.TEST_BC_A',
    ],
  }
ESBroadcastManager.unregisterReceiver(this, receiverIntentFilter)
    .then((() => {
        ESToast.showToast("取消注册广播成功!")
      }),
      error => {
        ESToast.showToast("取消注册广播失败!")
      })

接收广播

1、 首先注册广播接收者
2、 其次mixin ESBroadcast

点击查看源码
js
export default {
    mixins: [ESBroadcast],
    methods: {
        onESBroadcastReceive(intent) {
            if (ESLog.isLoggable(ESLog.DEBUG)) {
                ESLog.d(TAG, "------接收到广播----->>>" + JSON.stringify(intent))
            }
        },
    },
};

3、返回值

Object intent

属性类型默认值说明
idNumber``广播的id
actionString``广播的名称
extrasObject``广播携带的参数

完整示例

示例代码

点击查看源码
vue

<template>
  <div class="es-sdk-root-css">
    <title class="es-sdk-content-title-css" :text="this.$options.name"/>
    <div class="es-sdk-content-divider-css"/>
    <div class="es-sdk-content-column-css">
      <div class="es-sdk-content-row-css">
        <text-button text="发送广播" @onButtonClicked="onSendBroadcastButtonClicked"/>
        <text-button text="注册广播接受者" @onButtonClicked="onRegisterReceiverButtonClicked"/>
        <text-button text="取消注册广播接受者" @onButtonClicked="onUnregisterReceiverButtonClicked"/>
      </div>
    </div>
    <text :text="intent"></text>
  </div>
</template>

<script>
import {
  ESPage,
  ESBroadcastManager, ESBroadcast, ESToast,
} from "@extscreen/es-core";

const TAG = "ESBroadcast";

export default {
  name: '广播模块',
  mixins: [ESPage, ESBroadcast],
  data() {
    return {
      intent: '',
      receiverIntentFilter: null,
    }
  },
  methods: {
    onESCreate(params) {
      this.receiverIntentFilter = {
        action: [
          'android.intent.action.TEST_BC_A',
        ],
      }
    },
    onSendBroadcastButtonClicked() {
      let paramsArray = [
        ['-a', 'android.intent.action.TEST_BC_A'],
        ['--es', 'stringKey', 'stringValue'],
      ]
      ESBroadcastManager.sendBroadcast(paramsArray)
    },

    onRegisterReceiverButtonClicked() {
      ESBroadcastManager.registerReceiver(this, this.receiverIntentFilter)
          .then((() => {
                ESToast.showToast("注册广播成功!")
              }),
              error => {
                ESToast.showToast("注册广播失败!")
              })
    },

    onUnregisterReceiverButtonClicked() {
      ESBroadcastManager.unregisterReceiver(this, this.receiverIntentFilter)
          .then((() => {
                this.intent = '';
                ESToast.showToast("取消注册广播成功!")
              }),
              error => {
                this.intent = '';
                ESToast.showToast("取消注册广播失败!")
              })
    },
    onESBroadcastReceive(intent) {
      this.intent = JSON.stringify(intent);
    },
  },
};
</script>

<style scoped>
</style>