HarmonyOS鸿蒙Next中Calendar Kit无法正常提醒

Calendar Kit无法正常运行

我按照官网上的代码写了一份示例代码,我看日志没有报错,而且日历事件也顺利存进去了,但是时间到了之后没发现提醒痕迹

测试环境:Deveco 5.0.2 release,api12的虚拟机

代码如下:

// Index.ets
import { BusinessError } from '@kit.BasicServicesKit';
import { calendar_s } from '../entryability/EntryAbility';
import { calendarManager } from '@kit.CalendarKit';

const calendarAccount: calendarManager.CalendarAccount = {
  name: 'MyCalendar',
  type: calendarManager.CalendarType.LOCAL,
  displayName: 'MyCalendar'
};

const config: calendarManager.CalendarConfig = {
  enableReminder: true,
  color: '#aabbcc'
};

@Entry
@Component
struct Index {
  private date = new Date();
  @State eventId: number = 0;

  async myAddEvent(event: calendarManager.Event, calendar: calendarManager.Calendar | undefined) {
    try {
      let index = await calendar?.addEvent(event);
      console.info(`Succeeded in adding event, id->${index}`);
    } catch (error) {
      console.error(`Failed to add event. Code: ${error.code}, message: ${error.message}`);
    }
  }

  async myDeleteEvent(event: calendarManager.Event, calendar: calendarManager.Calendar | undefined) {
    try {
      await calendar?.deleteEvent(event.id);
      console.info(`Succeeded in deleting event, data->${JSON.stringify(event)}`);
    } catch (error) {
      console.error(`Failed to delete event. Code: ${error.code}, message: ${error.message}`);
    }
  }

  async myGetAllEventId(calendar: calendarManager.Calendar | undefined) {
    try {
      let events = await calendar?.getEvents();
      if(events === undefined) {
        return [];
      }
      let ids: number[] = [];
      for (let i = 0; i < events.length; i++) {
        let tmp: number | undefined = events[i].id;
        let numTmp = 0;
        if(tmp !== undefined){
          numTmp = tmp;
        }
        ids.push(numTmp);
      }
      return ids;
    } catch (error) {
      console.error(`Failed to get all event id. Code: ${error.code}, message: ${error.message}`);
      return [];
    }
  }

  async myDeleteAllEvent(calendar: calendarManager.Calendar | undefined) {
    try {
      let events = await calendar?.getEvents();
      if(events === undefined) {
        console.info('There is no event');
        return;
      }
      await calendar?.deleteEvents(await this.myGetAllEventId(calendar));
      console.info('Succeeded in deleting all event');
    } catch (error) {
      console.error(`Failed to delete all event. Code: ${error.code}, message: ${error.message}`);
    }
  }

  async myDisplayAllEvent(calendar: calendarManager.Calendar | undefined) {
    try {
      let events = await calendar?.getEvents();
      if(events === undefined) {
        return;
      }
      console.info(`Succeeded in getting events, data->${JSON.stringify(events)}`);
    } catch (error) {
      console.error(`Failed to get all event. Code: ${error.code}, message: ${error.message}`);
    }
  }

  async aboutToAppear(){
    console.info('aboutToAppear');
  }

  build() {
    Column() {
      Button('添加日程')
        .onClick(async () => {
          await this.myDeleteAllEvent(calendar_s);

          const event: calendarManager.Event = {
            title: 'title',
            type: calendarManager.EventType.NORMAL,
            startTime: this.date.getTime() + 3 * 60 * 1000,
            endTime: this.date.getTime() + 60 * 60 * 1000,
            reminderTime: [1],
            recurrenceRule: {
              recurrenceFrequency: calendarManager.RecurrenceFrequency.DAILY,
              count: 100,
              interval: 2,
              expire: this.date.getTime() + 60 * 60 * 1000 * 3,
              excludedDates: [this.date.getTime() + 60 * 60 * 1000 * 2]
            },
            service: {
              type: calendarManager.ServiceType.TRIP,
              uri: 'xxx://xxx.xxx.com/xxx',
              description: '一键服务'
            }
          };

          await this.myAddEvent(event, calendar_s);
          await this.myDisplayAllEvent(calendar_s);
        })
    }.justifyContent(FlexAlign.Center)
     .alignItems(HorizontalAlign.Center)
     .width('100%') // 占满容器宽度
     .height('100%') // 占满容器高度
  }
}
// EntryAbility.ets
import { hilog } from '@kit.PerformanceAnalysisKit';
import { BackupExtensionAbility, BundleVersion } from '@kit.CoreFileKit';
import { abilityAccessCtrl, AbilityConstant, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { calendarManager } from '@kit.CalendarKit';
import { window } from '@kit.ArkUI';
import {createCalendar, configureCalendar} from '../util/SetCalendar'

export let calendarMgr: calendarManager.CalendarManager | null = null;

export let calendar_s: calendarManager.Calendar | undefined = undefined;

export let mContext: common.UIAbilityContext | null = null;

const DOMAIN = 0x0000;

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    console.info("Ability onCreate");
  }

  onDestroy(): void {
    console.info("Ability onDestroy");
  }

  onWindowStageCreate(windowStage: window.WindowStage): void {
    console.info("Ability onWindowStageCreate");
    windowStage.loadContent('pages/Index', (err, data) => {
      if (err.code) {
        console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`);
        return;
      }
      console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`);
    });
    mContext = this.context;
    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
    let atManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
      console.log(`get Permission success, result: ${JSON.stringify(result)}`);
      calendarMgr = calendarManager.getCalendarManager(mContext);
      createCalendar().then((calendar: calendarManager.Calendar | undefined) => {
        if(calendar === undefined) {
          console.error(`Failed to create calendar`);
          return;
        }
        console.info(`Succeeded in creating calendar data->${JSON.stringify(calendar)}`)
        configureCalendar(calendar).then(() => {
          console.log(`Succeeded in configure calendar data->${JSON.stringify(calendar)}`);
          calendar_s = calendar;
        }).catch((error: BusinessError) => {
          console.error(`Failed to configure calendar. Code: ${error.code}, message: ${error.message}`);
        })
      }).catch((error: BusinessError) => {
        console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`);
      })
    }).catch((error: BusinessError) => {
      console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`);
    })
  }

  onWindowStageDestroy(): void {
    console.info("Ability onWindowStageDestroy");
  }

  onForeground(): void {
    console.info("Ability onForeground");
  }

  onBackground(): void {
    console.info("Ability onBackground");
  }
}

更多关于HarmonyOS鸿蒙Next中Calendar Kit无法正常提醒的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

您好,请使用真机进行调试

更多关于HarmonyOS鸿蒙Next中Calendar Kit无法正常提醒的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


用真机,

在HarmonyOS鸿蒙Next中,如果Calendar Kit无法正常提醒,可能是由于以下原因:

  1. 权限问题:确保应用已获取必要的通知和日历权限。检查“设置” > “应用管理” > “权限管理”中相关权限是否开启。

  2. 通知设置:检查系统通知设置,确保日历应用的通知未被关闭。进入“设置” > “通知和状态栏” > “应用通知管理”,找到日历应用并开启通知。

  3. 系统时间同步:确保设备时间与网络时间同步。进入“设置” > “系统和更新” > “日期和时间”,开启“自动设置”。

  4. 应用更新:检查是否有Calendar Kit的更新版本,及时更新到最新版本。

  5. 重启设备:有时简单的重启可以解决临时性的系统问题。

如果以上方法无效,建议联系华为客服或开发者社区获取进一步支持。

回到顶部