gpt4 book ai didi

Android 使用 Intent 向日历添加事件,获取 EventID

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:00:50 26 4
gpt4 key购买 nike

我正在尝试通过日历 Intent 添加事件。但是,我不知道如何获取刚刚添加的事件的事件 ID。

        Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", sdate.getTime());
intent.putExtra("endTime", edate.getTime());
intent.putExtra("allDay", true);
intent.putExtra("rrule", "FREQ=YEARLY");
intent.putExtra("title", "A Test Event from android app");
intent.putExtra("description", "Description here");
intent.putExtra("eventLocation", "location here here here");

我广泛阅读了其他资源,但似乎找不到答案。我试过 startActivityForResult 但我似乎无法让它工作。在 Activity 结束之前,我尝试的其他方法似乎无法检查它。

将事件添加到日历后,还有其他方法可以获取事件 ID 吗?为此,我需要使用 intent 方法。

最佳答案

试试这个解决方案:

import android.content.ContentResolver;
import android.content.ContentValues;
import android.net.Uri;

public class CalenderUtils {

/**
* Add a new event into a native Google calendar. Add alert notification by setting <code>isRemind</code> as <code>true</code>.
* @param cr - ContentResolver
* @param title - Event title
* @param addInfo - Event description
* @param place - Event place
* @param status - <code>int</code> This information is sufficient for most entries: tentative (0), confirmed (1) or canceled (2):
* @param startDate - <code>long</code> event start time in mls
* @param isRemind - <code>boolean</code> need to remind about event before?
* @param isMailService - <code>boolean</code>. Adding attendees to the meeting
* @return <code>long</code> eventID
*/
public static long addEventToCalender(ContentResolver cr, String title, String addInfo, String place, int status,
long startDate, boolean isRemind, boolean isMailService) {
String eventUriStr = "content://com.android.calendar/events";
ContentValues event = new ContentValues();
// id, We need to choose from our mobile for primary its 1
event.put("calendar_id", 1);
event.put("title", title);
event.put("description", addInfo);
event.put("eventLocation", place);
event.put("eventTimezone", "UTC/GMT +2:00");

// For next 1hr
long endDate = startDate + 1000 * 60 * 60;
event.put("dtstart", startDate);
event.put("dtend", endDate);
//If it is bithday alarm or such kind (which should remind me for whole day) 0 for false, 1 for true
// values.put("allDay", 1);
event.put("eventStatus", status);
event.put("hasAlarm", 1);

Uri eventUri = cr.insert(Uri.parse(eventUriStr), event);
long eventID = Long.parseLong(eventUri.getLastPathSegment());

if (isRemind) {
String reminderUriString = "content://com.android.calendar/reminders";
ContentValues reminderValues = new ContentValues();
reminderValues.put("event_id", eventID);
// Default value of the system. Minutes is a integer
reminderValues.put("minutes", 5);
// Alert Methods: Default(0), Alert(1), Email(2), SMS(3)
reminderValues.put("method", 1);
cr.insert(Uri.parse(reminderUriString), reminderValues); //Uri reminderUri =
}
if (isMailService) {
String attendeuesesUriString = "content://com.android.calendar/attendees";
/********* To add multiple attendees need to insert ContentValues multiple times ***********/
ContentValues attendeesValues = new ContentValues();
attendeesValues.put("event_id", eventID);
// Attendees name
attendeesValues.put("attendeeName", "xxxxx");
// Attendee email
attendeesValues.put("attendeeEmail", "yyyy@gmail.com");
// Relationship_Attendee(1), Relationship_None(0), Organizer(2), Performer(3), Speaker(4)
attendeesValues.put("attendeeRelationship", 0);
// None(0), Optional(1), Required(2), Resource(3)
attendeesValues.put("attendeeType", 0);
// None(0), Accepted(1), Decline(2), Invited(3), Tentative(4)
attendeesValues.put("attendeeStatus", 0);
cr.insert(Uri.parse(attendeuesesUriString), attendeesValues); //Uri attendeuesesUri =
}

return eventID;
}

}

我从我的项目中复制粘贴了这个类,因此欢迎您根据自己的喜好更改名称。正如您在这里注意到的那样,您在插入后收到 id 值。

如果您需要获取 reminderId 或与与会者会面 id - 您必须处理来自 cr.insert... 的返回值和然后 parce uri long id = Long.parseLong(uri.getLastPathSegment());

这是附加信息:CalendarContract.EventsCalendar chapter

关于Android 使用 Intent 向日历添加事件,获取 EventID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007549/

26 4 0
文章推荐: android - 在自己的应用程序中接收 GTalk 消息?
文章推荐: javascript - Angular - ngChange 在