如何使用 Expo SDK 日历 API 获取 Android 中的默认日历?
How to get the Default Calendar in Android using the Expo SDK Calendar API?
已解决:使用 await 和一个变量来存储承诺。
我正在尝试使用 react-native 和 expo sdk 将事件插入到 android 设备上的默认日历中。以前,可以使用 createEventAsync()
方法创建事件,第一个参数为 Calendar.DEFAULT,但不再支持。我可以使用 getCalendarsAsync()
方法获取所有日历,但我返回的对象毫无意义。一些代码:
async addReservationToCalendar(date) {
await this.obtainCalendarPermission();
console.log(Calendar.getCalendarsAsync());
}
有人建议我可以遍历响应以找到 isPrimary 属性设置为 true 的日历,但我不知道如何实现这一点。我已经获得许可,并且收到以下承诺作为回应。
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
.
我需要做什么才能使用 expo Calendar API 在 android 设备上设置日历事件?
因为这是一个承诺,所以你需要这样做
Calendar.getCalendarsAsync().then(calendars => console.log(calendars))
这是一个承诺,因此您可以使用 then 语句或 async await 。
所以
或者你可以
async addReservationToCalendar(date) {
await this.obtainCalendarPermission();
let result = await Calendar.getCalendarsAsync();
console.log(result,'result')
console.log(Calendar.getCalendarsAsync());
}
或
Calendar.getCalendarsAsync().then(calendars => console.log(calendars,'calenders'))
希望对您有所帮助。
版本 39 在 https://docs.expo.io/versions/v39.0.0/sdk/calendar/#usage:
有一个例子
async function getDefaultCalendarSource() {
const calendars = await Calendar.getCalendarsAsync();
const defaultCalendars = calendars.filter(each => each.source.name === 'Default');
return defaultCalendars[0].source;
}
已解决:使用 await 和一个变量来存储承诺。
我正在尝试使用 react-native 和 expo sdk 将事件插入到 android 设备上的默认日历中。以前,可以使用 createEventAsync()
方法创建事件,第一个参数为 Calendar.DEFAULT,但不再支持。我可以使用 getCalendarsAsync()
方法获取所有日历,但我返回的对象毫无意义。一些代码:
async addReservationToCalendar(date) {
await this.obtainCalendarPermission();
console.log(Calendar.getCalendarsAsync());
}
有人建议我可以遍历响应以找到 isPrimary 属性设置为 true 的日历,但我不知道如何实现这一点。我已经获得许可,并且收到以下承诺作为回应。
Promise {
"_40": 0,
"_55": null,
"_65": 0,
"_72": null,
}
.
我需要做什么才能使用 expo Calendar API 在 android 设备上设置日历事件?
因为这是一个承诺,所以你需要这样做
Calendar.getCalendarsAsync().then(calendars => console.log(calendars))
这是一个承诺,因此您可以使用 then 语句或 async await 。
所以 或者你可以
async addReservationToCalendar(date) {
await this.obtainCalendarPermission();
let result = await Calendar.getCalendarsAsync();
console.log(result,'result')
console.log(Calendar.getCalendarsAsync());
}
或
Calendar.getCalendarsAsync().then(calendars => console.log(calendars,'calenders'))
希望对您有所帮助。
版本 39 在 https://docs.expo.io/versions/v39.0.0/sdk/calendar/#usage:
有一个例子async function getDefaultCalendarSource() {
const calendars = await Calendar.getCalendarsAsync();
const defaultCalendars = calendars.filter(each => each.source.name === 'Default');
return defaultCalendars[0].source;
}