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无法正常提醒,可能是由于以下原因:
-
权限问题:确保应用已获取必要的通知和日历权限。检查“设置” > “应用管理” > “权限管理”中相关权限是否开启。
-
通知设置:检查系统通知设置,确保日历应用的通知未被关闭。进入“设置” > “通知和状态栏” > “应用通知管理”,找到日历应用并开启通知。
-
系统时间同步:确保设备时间与网络时间同步。进入“设置” > “系统和更新” > “日期和时间”,开启“自动设置”。
-
应用更新:检查是否有Calendar Kit的更新版本,及时更新到最新版本。
-
重启设备:有时简单的重启可以解决临时性的系统问题。
如果以上方法无效,建议联系华为客服或开发者社区获取进一步支持。