HarmonyOS 鸿蒙Next中如何监听短信接收事件?

HarmonyOS 鸿蒙Next中如何监听短信接收事件? 想在app内监听用户收到的手机短信,针对短信包含特定关键词的进行处理。 但找文档似乎没有相关的内容。

5 回复

【背景知识】

  • 全量短信读取权限目前属于系统受限权限,为保护消费者隐私不提供给第三方应用申请。
  • 目前系统是支持自动复制短信内验证码的,小艺输入法支持自动提取验证码,会在输入法软键盘候选词栏显示。

【解决方案】

应用可以读取用户指定授权的短信,可以参考受限开放权限ohos.permission.USE_FRAUD_MESSAGES_PICKER,该权限允许应用使用诈骗短信选择器,获取短信内容。可申请此权限的特殊场景与功能:

  • 仅提供给反诈类应用使用。
  • 面向合作企业开放,仅在允许名单内的固定应用可申请该权限,如需进入允许名单,请联系企业技术支持。

更多关于HarmonyOS 鸿蒙Next中如何监听短信接收事件?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我直接给你一杵子。还想监听我短信?想屁吃吧,

好家伙,你是不是都不看鸿蒙发布会? 鸿蒙的安全是第一位的。第一位!怎么可能让第三方APP接管短信!

在HarmonyOS Next中监听短信接收事件,需使用@ohos.telephony.sms模块。通过sms.on('messageReceived')方法注册监听器,回调函数可获取接收的短信内容及发送方信息。需在module.json5配置文件中声明ohos.permission.RECEIVE_SMS权限。监听器需及时调用sms.off()取消注册以避免资源占用。

在HarmonyOS Next中,监听短信接收事件可以通过订阅系统事件实现。具体步骤如下:

  1. 使用@ohos.notification模块的subscribe方法订阅commonEvent.SMS_RECEIVED事件。
  2. 在回调函数中处理接收到的短信内容,通过CommonEventData获取短信数据。
  3. 使用正则表达式或字符串匹配方法筛选包含特定关键词的短信。

示例代码:

import commonEvent from '@ohos.commonEventManager';

commonEvent.subscribe('usual.event.SMS_RECEIVED', (err, data) => {
  if (err) {
    console.error('订阅失败');
    return;
  }
  const message = data.parameters?.message; // 获取短信内容
  if (message && message.includes('特定关键词')) {
    // 处理逻辑
  }
});

注意:需要申请ohos.permission.RECEIVE_SMS权限,并在module.json5中声明。

回到顶部