【鸿蒙开发】接收通知

ZJKJTL Android 开发  2021-08-07 00:02:11

 在开发过程中我我们可能需要接收一些通知,例如网络的改变,蓝牙的连接,短信接收等等。有助于我们为用户提供更好的体验。

首先我们需要创建通知的订阅者,需要继承CommonEventSubscriber类并实现其抽象方法。

public class MyCommonEventSubscriber extends CommonEventSubscriber {
    private static final HiLogLabel LABEL_LOG = new HiLogLabel(3, 0xD001100, "MyCommonEventSubscriber");

    public MyCommonEventSubscriber(CommonEventSubscribeInfo subscribeInfo) {
        super(subscribeInfo);
    }

    @Override
    public void onReceiveEvent(CommonEventData commonEventData) {
        // 当应用程序收到新的公共事件时回调
        Intent intent = commonEventData.getIntent();

        // 判断动作类型
        switch (intent.getAction()){
            case CommonEventSupport.COMMON_EVENT_CONFIGURATION_CHANGED:
                HiLog.info(LABEL_LOG,"屏幕旋转");
                break;

            case CommonEventSupport.COMMON_EVENT_SCREEN_ON:
                HiLog.info(LABEL_LOG,"亮屏");
                break;

            default:
                break;
        }
    }
}

然后需要在Ability中设置我们需要订阅哪些通知。

MatchingSkills matchingSkills = new MatchingSkills();
matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_SCREEN_ON); // 亮屏事件
matchingSkills.addEvent(CommonEventSupport.COMMON_EVENT_CONFIGURATION_CHANGED); // 屏幕旋转事件
CommonEventSubscribeInfo subscribeInfo = new CommonEventSubscribeInfo(matchingSkills);
MyCommonEventSubscriber subscriber = new MyCommonEventSubscriber(subscribeInfo);
try {
    CommonEventManager.subscribeCommonEvent(subscriber);
} catch (RemoteException e) {
    e.printStackTrace();
}

启动对应的Ability就可以接收通知了。具体支持哪些通知我们可以看看CommonEventSupport类 

...全文
369 1 收藏 回复
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复

还没有回复,快来抢沙发~

相关推荐
发帖
HarmonyOS技术社区
创建于2020-09-25

3187

社区成员

HarmonyOS是一款“面向未来”、面向全场景的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。
帖子事件
创建了帖子
2021-08-07 00:02
社区公告
鸿蒙技术社区致力成为开发者爱好者的交流学习平台,我们希望在这里提供鸿蒙代码实例、项目案例、并提供最新文档翻译。