HarmonyOS 鸿蒙Next 通知权限申请弹框不弹出的问题

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 通知权限申请弹框不弹出的问题 我在EntryAbility的onCreate调用notificationManager.requestEnableNotification,返回1600001 Internal error.错误,无法弹出权限申请窗口。这是啥情况啊?

5 回复

测试是可以弹窗的,参考文档:请求通知授权-Notification Kit(用户通知服务)-应用服务 - 华为HarmonyOS开发者 (huawei.com)

提供一个demo:

import { AbilityConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import notificationManager from '@ohos.notificationManager';
import { Base } from '@ohos.base';

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
   //弹窗
    notificationManager.isNotificationEnabled().then((data: boolean) => {
      console.info("isNotificationEnabled success, data: " + JSON.stringify(data));
      if(!data){
        notificationManager.requestEnableNotification().then(() => {
          console.info(`[ANS] requestEnableNotification success`);
        }).catch((err : Base.BusinessError) => {
          if(1600004 == err.code){
            console.info(`[ANS] requestEnableNotification refused`);
          } else {
            console.error(`[ANS] requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
          }
        });
      }
    }).catch((err : Base.BusinessError) => {
      console.error(`isNotificationEnabled fail: ${JSON.stringify(err)}`);
    });
  }

  onDestroy(): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onDestroy');
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
  }

  onWindowStageDestroy(): void {
    // Main window is destroyed, release UI related resources
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageDestroy');
  }

  onForeground(): void {
    // Ability has brought to foreground
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
  }

  onBackground(): void {
    // Ability has back to background
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
  }
}

更多关于HarmonyOS 鸿蒙Next 通知权限申请弹框不弹出的问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在使用通知时,应用需要开启通知开关才能发送通知。

开发者可以在通知发布前调用requestEnableNotification()方法,弹窗让用户选择是否开启使能开关,仅弹窗一次,后续调用该接口不再弹窗。

而判断通知开关是否已开启:isNotificationEnabled

期待HarmonyOS能在未来推出更多针对企业用户的解决方案。

行~多谢指导,

姓名

张三

联系方式

教育背景

  • 硕士, 计算机科学, 清华大学, 2010 - 2013
  • 学士, 计算机科学, 北京大学, 2006 - 2010

工作经验

阿里巴巴

  • 软件工程师, 2013 - 至今
    • 负责公司核心业务系统的开发与维护
    • 参与多个大型项目的设计与实现
    • 指导新员工熟悉工作环境和技术栈

针对HarmonyOS 鸿蒙Next系统中通知权限申请弹框不弹出的问题,可能的原因及解决方法如下:

  1. 系统策略调整:鸿蒙系统可能在某些版本或特定情况下调整了权限申请的展示策略。检查当前系统版本是否为最新,或是否有相关的系统更新说明提到此变更。

  2. 应用配置问题:确保应用已正确配置权限申请相关代码,且符合鸿蒙系统的权限申请规范。检查manifest.json或相关配置文件中是否已声明所需权限。

  3. 用户操作影响:用户可能在之前的操作中拒绝了权限申请,并选择了“不再提示”。这种情况下,应用需要通过其他方式引导用户手动到系统设置中开启权限。

  4. 系统缓存问题:尝试清除系统缓存或重启设备,看是否能恢复权限申请弹框的显示。

  5. 应用兼容性:确认应用是否完全兼容当前鸿蒙系统版本,有时版本不兼容也会导致权限申请异常。

如果上述方法均未能解决问题,可能是系统深层次的bug或特定环境下的异常。此时,建议直接联系鸿蒙系统的官方客服,提供详细的设备信息、系统版本及应用情况,以便进行更深入的分析和解决。如果问题依旧没法解决请联系官网客服,官网地址是

回到顶部