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

调用 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失败
280浏览 • 1回复 待解决
如何跳转到系统日历应用?
294浏览 • 1回复 待解决
如何监听系统应用异常
1581浏览 • 1回复 待解决
@Builder使用引用时异常
767浏览 • 1回复 待解决
编辑器异常问题,比如方法跳转失败
378浏览 • 1回复 待解决
HarmonyOS 日历相关组件
271浏览 • 1回复 待解决
PA开发,如何添加日历提醒?
3897浏览 • 1回复 待解决
HarmonyOS CJCalendar 日历组件无法编译
589浏览 • 1回复 待解决
使用TextPicker控件显示异常的问题
714浏览 • 1回复 待解决
HarmonyOS有日历组件吗?
268浏览 • 1回复 待解决
getInspectorByKey方法使用
242浏览 • 1回复 待解决
使用OkHttp访问本地接口失败?
9856浏览 • 2回复 待解决
cocos引擎调用HarmonyOS系统方法
408浏览 • 1回复 待解决
如何让日历显示的是农历日期?
502浏览 • 1回复 待解决
HarmonyOS 希望官方提供日历组件
124浏览 • 1回复 待解决
JS如何添加日历日程提醒?
7785浏览 • 1回复 待解决