系统日历方法使用会抛异常

调用 calendarManager.getCalendarManager(context) 方法会抛出 GetCalendar failed! 异常,想确定一下原因。

HarmonyOS
2024-09-06 12:04:12
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

日程管理能力文档:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-calendar-kit/js-apis-calendarManager.md#getcalendar

向用户申请授权:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/request-user-authorization-0000001774279718-V5

在module.json5 中配置读日历权限ohos.permission.READ_CALENDAR后,参考下面代码,getCalendar成功。

Button('requestPermission First') 
  .onClick(() => { 
    let context = getContext(this) 
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); 
    atManager.requestPermissionsFromUser(context, ['ohos.permission.READ_CALENDAR']) 
      .then((data: PermissionRequestResult) => { 
        if (data.authResults[0] === 0) { 
          console.info(TAG, 'requestPermission success.'); 
        } 
      }) 
      .catch((err: BusinessError) => { 
        console.info(TAG, 'data:' + JSON.stringify(err)); 
      }) 
  }) 
Button('check Permission and get Calendar') 
  .onClick(() => { 
    let context = getContext(this) 
    let atManager: abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager(); 
    bundleManager.getBundleInfoForSelf(bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION).then((bundleInfo)=>{ 
      let tokenId = bundleInfo.appInfo.accessTokenId; 
      atManager.checkAccessToken(tokenId, 'ohos.permission.READ_CALENDAR').then((data: abilityAccessCtrl.GrantStatus) => { 
        if(data.valueOf() === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED){ 
          // 权限校验成功,获取日历 
          let calendar: calendarManager.Calendar | undefined = undefined; 
          let calendarMgr = calendarManager.getCalendarManager(context); 
          calendarMgr?.getCalendar((err: BusinessError, data: calendarManager.Calendar) => { 
            if (err) { 
              console.error(TAG, `Failed to get calendar, err -> ${JSON.stringify(err)}`); 
            } else { 
              calendar = data; 
              this.getCalendarState = 'success' 
            } 
          }); 
        } 
      }).catch((err: BusinessError) => { 
        console.error(TAG, `checkAccessToken fail`); 
      }); 
    }) 
  })
分享
微博
QQ
微信
回复
2024-09-06 15:09:52
相关问题
日历功能异常,getCalendar失败
354浏览 • 1回复 待解决
如何跳转到系统日历应用?
337浏览 • 1回复 待解决
如何监听系统应用异常
1610浏览 • 1回复 待解决
获取系统当前时间戳异常
88浏览 • 1回复 待解决
@Builder使用引用时异常
799浏览 • 1回复 待解决
编辑器异常问题,比如方法跳转失败
443浏览 • 1回复 待解决
HarmonyOS 日历相关组件
302浏览 • 1回复 待解决
使用TextPicker控件显示异常的问题
740浏览 • 1回复 待解决
getInspectorByKey方法使用
300浏览 • 1回复 待解决
PA开发,如何添加日历提醒?
3935浏览 • 1回复 待解决
HarmonyOS CJCalendar 日历组件无法编译
691浏览 • 1回复 待解决
HarmonyOS有日历组件吗?
323浏览 • 1回复 待解决
cocos引擎调用HarmonyOS系统方法
489浏览 • 1回复 待解决
HarmonyOS 数据库的beginTrans使用异常
23浏览 • 0回复 待解决