2016-05-05 9 views
0
私はカレンダーにイベントを追加するには、次の機能を使用してい

ずにカレンダーイベントの追加:アンドロイド - リマインダー

public String addEventToCalendar(long startDate, long endDate, String recurrenceRule, boolean isAllDay, String title, String description, String location, long calendarID) { 
    ContentResolver cr = context.getContentResolver(); 
    ContentValues values = new ContentValues(); 
    TimeZone timeZone = TimeZone.getDefault(); 
    values.put(CalendarContract.Events.DTSTART, startDate); 
    values.put(CalendarContract.Events.DTEND, endDate); 
    values.put(CalendarContract.Events.EVENT_TIMEZONE, timeZone.getID()); 
    if (recurrenceRule != null) 
     values.put(CalendarContract.Events.RRULE, recurrenceRule); 
    values.put(CalendarContract.Events.TITLE, title); 
    values.put(CalendarContract.Events.DESCRIPTION, description); 
    values.put(CalendarContract.Events.CALENDAR_ID, calendarID); 
    values.put(CalendarContract.Events.ALL_DAY, isAllDay); 
    values.put(CalendarContract.Events.EVENT_LOCATION, location); 
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) { 
     return null; // we don't have the right permissions 
    } 
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values); 
    String eventID = uri.getLastPathSegment(); 
    return eventID; 
} 

それは動作しますが、結果のカレンダーイベントは、30分のアラームを持っています!私は理由を理解することができません。どんな手がかりをお願いしますか? ありがとうございました。

答えて

0

カレンダーイベントを挿入すると、デフォルトのアラームが追加されたようです。あなたが試みることができる何

は、あなたがそれを挿入した直後に、あなたのイベントに関連するすべてのリマインダーがあるかどうかを確認することです。もしそうなら、削除してください。カーソルは、あなたがそれを削除することができます任意のリマインダーが含まれている場合

CalendarContract.Reminders.query(contentResolver, eventId, projection) 

はあなたのイベントID

に関連したリマインダーのリストが表示されます:

getContentResolver().delete(ContentUris.withAppendedId(CalendarContract.Reminders.CONTENT_URI, reminderId), null, null); 

ドキュメント:

+0

は、私はすでにそれを試してみました。それはリマインダーを削除するようだが、それでも私はリマインダーを受け取る! –

0

をしようこの

ContentValues values = new ContentValues(); 
values.put(CalendarContract.Events.HAS_ALARM, 0); 
01を追加

イベントにアラームがあるかどうか。列名。

型:INTEGER(ブール)

のpublic static final文字列HAS_ALARM = "hasAlarm"。

関連する問題