日历功能异常,getCalendar失败?

按照文档描述通过getCalendar获取日历,发现走了catch提示【GetCalendar failed!】

Cannot get SourceMap info, dump raw stack:
=====================Backtrace========================
#01 pc 000000000001f0b3 /system/lib64/module/libcalendarmanager.z.so
#02 pc 000000000001f31b /system/lib64/module/libcalendarmanager.z.so
#03 pc 00000000000479eb /system/lib64/platformsdk/libace_napi.z.so
#04 pc 0000000000012cbb /system/lib64/platformsdk/libuv.so
#05 pc 00000000000172bb /system/lib64/platformsdk/libuv.so
#06 pc 0000000000016c03 /system/lib64/platformsdk/libuv.so
#07 pc 000000000001772b /system/lib64/platformsdk/libuv.so
#08 pc 0000000000069047 /system/lib64/platformsdk/libruntime.z.so

完整代码如下:

import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';
import calendarManager from '@ohos.calendarManager';
import { abilityAccessCtrl, common, PermissionRequestResult, Permissions } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';

export let calendarMgr: calendarManager.CalendarManager | null = null;
export let mContext: common.UIAbilityContext | null = null;
export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
  }

  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, data) => {
      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. Data: %{public}s', 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);
        calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
          console.info(`Succeeded to get calendar, data -> ${JSON.stringify(data)}`);
          const event: calendarManager.Event = {
            title: "我是标题",
            description: "我是描述",
            reminderTime: [5],
            type: calendarManager.EventType.NORMAL,
            startTime: 10152459790900,
            endTime: 10152603790900
          };
          data.addEvent(event, (err: BusinessError, data: number): void => {
            if (err) {
              console.error(`Failed to addEvent, err -> ${JSON.stringify(err)}`);
            } else {
              console.info(`Succeeded to add event, id -> ${data}`);
            }
          });
        }).catch((err: BusinessError) => {
          console.error(`Failed to get calendar, err -> ${JSON.stringify(err)}`);
        });
      }).catch((error: BusinessError) => {
        console.error(`get Permission error, error: ${JSON.stringify(error)}`);
      })
    });
  }

  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');
  }
}
阅读 755
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进