2016-10-16 10 views
0

プログラムでカレンダーイベントのリマインダを作成するのに助けてくれる人がいますか? APIレベル22では完全に正常に動作しますが、23(Marshmallow)では動作しません。Marshmallowデバイスのカレンダーイベントの作成リマインダーを追加できません

コード

ContentValues reminderValues = new ContentValues(); 
reminderValues.put(CalendarContract.Reminders.EVENT_ID, 1); 
reminderValues.put(CalendarContract.Reminders.MINUTES, 1); 
reminderValues.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_DEFAULT); 
Uri reminderUri = getApplicationContext().getContentResolver() 
        .insert(CalendarContract.Reminders.CONTENT_URI, reminderValues); 

例外

SqliteDoneException

答えて

0
private int getPrimaryCalendar() { 
    // noinspection ResourceType 
    Cursor managedCursor = getContentResolver().query(CalendarContract.Calendars.CONTENT_URI, new String[]{ 
      CalendarContract.Calendars._ID, CalendarContract.Calendars.IS_PRIMARY}, null, null, null); 

    int calID = 0; 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
     if (managedCursor != null && managedCursor.moveToFirst()) { 
      do { 
       calID = managedCursor.getInt(managedCursor.getColumnIndex(CalendarContract.Calendars._ID)); 
       int columnIndex = -1; 
       try { 
        columnIndex = managedCursor.getColumnIndex(CalendarContract.Calendars.IS_PRIMARY); 
       } catch (NullPointerException e) { 
        LogUtil.d(TAG, e.getMessage()); 
       } 
       if (columnIndex != -1 && managedCursor.getInt(columnIndex) == 1) { 
        break; 
       } else { 
        calID = 1; 
       } 
      } while (managedCursor.moveToNext()); 
      managedCursor.close(); 
     } 
    } 

    return calID; 
} 

デフォルトのカレンダーを使用する

+0

ありがとうございます!それは本当に多くの助けになりました。 – Viji

+0

Nullチェック例外を処理しました。 –

+0

@Amardeepがデバッグされたとき 'managedCursor.getColumnIndex(CalendarContract.Calendars.IS_PRIMARY);' getColumnIndexは 'columnIndex'値が0の' NullPointerException'を投げています。 何が原因でしょうか? イベントを追加している間、返されるcalIDは常に20です。 – kAmol

関連する問題