gpt4 book ai didi

java - 如何使用 android 4.0 日历提供程序 API 选择要从中提取事件的日历?

转载 作者:行者123 更新时间:2023-12-01 05:03:11 27 4
gpt4 key购买 nike

我一直在编写一种闹钟应用程序,暂时仅供我自己使用,但如果有人需要,我可能会在完成后免费提供它。无论如何,我都被困住了。我想要从日历中得到的只是用户日历中的下一个事件,这样我就可以显示标题、时间、截止时间和位置。

这是我到目前为止所得到的:

    //get cursor to first row of table of events
mCursor = getContentResolver().query(
CalendarContract.Events.CONTENT_URI, COLS, null, null, null);
mCursor.moveToFirst();

//variables; title, startdate in miliseconds, etc
String nextAppointmentTitle = "N/A";
Long start = 0L; //tf(start) for appointmentTime
String timeUntilNextAppointment = "N/A";
String nextAppointmentLocation = "N/A";


Format df = DateFormat.getDateFormat(this);
Format tf = DateFormat.getTimeFormat(this);
try {
nextAppointmentTitle = mCursor.getString(0);
start = mCursor.getLong(1);
} catch (Exception e) {
//ignore for the time being
}


//create a date object for the time of the event
GregorianCalendar appointmentTime = (GregorianCalendar) GregorianCalendar.getInstance();
appointmentTime.setTimeInMillis(start);
//create date object for current time
GregorianCalendar now = (GregorianCalendar) GregorianCalendar.getInstance();

//get the time from current time until start of event
long millisUntilNextMeeting = (long) appointmentTime.getTimeInMillis() - (long) now.getTimeInMillis();
GregorianCalendar timeUntilNextMeeting = (GregorianCalendar) GregorianCalendar.getInstance();
timeUntilNextMeeting.clear();
timeUntilNextMeeting.setTime(new Date(millisUntilNextMeeting));

millisUntilNextMeeting= (millisUntilNextMeeting/1000) /60;

if (timeUntilNextMeeting.get(GregorianCalendar.HOUR_OF_DAY) > 0) {
int hours = timeUntilNextMeeting.get(GregorianCalendar.HOUR_OF_DAY) + 6;
timeUntilNextAppointment = "" + hours + " hours";
} else {
timeUntilNextAppointment = "" + timeUntilNextMeeting.get(GregorianCalendar.MINUTE) + " minutes";
}
// ... do things with values

它不是显示我的下一个约会,而是显示艾伯塔省家庭日,这显然是在二月举行的。我环顾了一下我的日历,似乎它任意选择了我的“加拿大假期”日历,谷歌非常有帮助地将其添加到我的手机中,而不是我实际放入的日历。我似乎不知道如何选择正确的日历,而不必每次都让用户选择它。

有人知道我如何从我想要的日历中获取我想要的值吗?我真的很感激您的帮助。

PS 我知道这个应用程序无法在 4.0 之前的设备上运行,但我并不在乎再花 4 个小时来尝试破译可怕的 google api 文档。

最佳答案

首先使用 CalendarContract.Calendars 中的常量找到所需的日历。对 NAME 或 CALENDAR_DISPLAY_NAME 进行查询。从返回的行中获取 _ID 值。使用此值查询 CalendarContract.Events.CALENDAR_ID。这将为您提供由 CalendarContract.Events.CALENDAR_ID 标识的日历的所有事件。

您所做的是获取所有日历的所有事件。

关于java - 如何使用 android 4.0 日历提供程序 API 选择要从中提取事件的日历?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13099827/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com