#java #android
#java #Android
Вопрос:
Я использую намерение открыть приложение календаря, и мне не нужны явные разрешения от пользователя. Открывается приложение календаря, и события сохраняются, но для уведомлений по умолчанию установлено значение 30 минут. Я хочу изменить его на 5 минут до события.
long begTime = Long.parseLong(carouselModel.getStTime());
beginTime.setTimeInMillis(begTime);
Calendar endTime = Calendar.getInstance();
long endTim = Long.parseLong(carouselModel.getEndTime());
endTime.setTimeInMillis(endTim);
Intent intent = new Intent(Intent.ACTION_INSERT)
.setData(CalendarContract.Events.CONTENT_URI)
.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, beginTime.getTimeInMillis())
.putExtra(CalendarContract.EXTRA_EVENT_END_TIME, endTime.getTimeInMillis())
.putExtra(CalendarContract.Events.TITLE, "Yoga")
.putExtra(CalendarContract.Reminders.MINUTES,5)
.putExtra(CalendarContract.Reminders.EVENT_ID,)
.putExtra(CalendarContract.Events.DESCRIPTION, "Group class")
.putExtra(CalendarContract.Events.EVENT_LOCATION, "The gym")
.putExtra(CalendarContract.Events.AVAILABILITY, CalendarContract.Events.AVAILABILITY_BUSY);
startActivity(intent);
Ответ №1:
К сожалению, единственный способ добавить напоминания в календарь прямо сейчас — через контент-провайдера, как указано здесь. Итак, вам нужно добавить разрешения календаря в ваше приложение.
Ответ №2:
Вы можете использовать этот метод для уведомления и напоминания.
public static long pushEventToCalender(Activity curActivity,
String title, String addInfo, String place, int status,
long startDate, int reminderTime, boolean needReminder,
boolean needMailService) {
/***************** Event: note(without alert) *******************/
try {
String eventUriString = "content://com.android.calendar/events";
ContentValues eventValues = new ContentValues();
eventValues.put("calendar_id", 3); // id, We need to choose from
// our mobile for primary
// its 1
eventValues.put("title", title);
eventValues.put("description", addInfo);
eventValues.put("eventLocation", place);
long endDate = startDate 1000 * 60 * 60; // For next 1hr
eventValues.put("dtstart", startDate);
eventValues.put("dtend", endDate);
// values.put("allDay", 1); //If it is bithday alarm or such
// kind (which should remind me for whole day) 0 for false, 1
// for true
eventValues.put("eventStatus", status); // This information is
// sufficient for most
// entries tentative (0),
// confirmed (1) or canceled
// (2):
/*
* eventValues.put("visibility", 3); // visibility to default (0), //
* confidential (1), private // (2), or public (3):
*/
// eventValues.put("transparency", 0); // You can control whether
// an event consumes time
// opaque (0) or transparent
// (1).
eventValues.put("hasAlarm", 1); // 0 for false, 1 for true
eventValues.put("eventTimezone", TimeZone.getDefault().getID());
Uri eventUri = curActivity.getApplicationContext().getContentResolver()
.insert(Uri.parse(eventUriString), eventValues);
eventID = Long.parseLong(eventUri.getLastPathSegment());
if (needReminder) {
/***************** Event: Reminder(with alert) Adding reminder to event *******************/
String reminderUriString = "content://com.android.calendar/reminders";
ContentValues reminderValues = new ContentValues();
reminderValues.put("event_id", eventID);
reminderValues.put("minutes", reminderTime); // Default value of the
// system. Minutes is a
// integer
reminderValues.put("method", 1); // Alert Methods: Default(0),
// Alert(1), Email(2),
// SMS(3)
Uri reminderUri = curActivity.getApplicationContext()
.getContentResolver()
.insert(Uri.parse(reminderUriString), reminderValues);
}
/***************** Event: Meeting(without alert) Adding Attendies to the meeting *******************/
if (needMailService) {
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);
attendeesValues.put("attendeeName", "Name"); // Attendees name
attendeesValues.put("attendeeEmail", "test@gmail.com");// Attendee
// E
// mail
// id
attendeesValues.put("attendeeRelationship", 2); // Relationship_Attendee(1),
// Relationship_None(0),
// Organizer(2),
// Performer(3),
// Speaker(4)
attendeesValues.put("attendeeType", 0); // None(0), Optional(1),
// Required(2), Resource(3)
attendeesValues.put("attendeeStatus", 0); // NOne(0), Accepted(1),
// Decline(2),
// Invited(3),
// Tentative(4)
Uri attendeuesesUri = curActivity.getApplicationContext()
.getContentResolver()
.insert(Uri.parse(attendeuesesUriString), attendeesValues);
} catch (Exception e) {
e.printStackTrace();
}
return eventID;
}