protected void addToCalendar()
{
final ContentResolver cr = this.getContentResolver();
Cursor cursor = cr.query(Uri.parse("content://com.android.calendar/calendars"), new String[]{ "_id", "displayName" }, null, null, null);
cursor.moveToFirst();
String[] calNames = new String[cursor.getCount()];
final int[] calIds = new int[cursor.getCount()];
Log.i("Cal Names Length", "Length of Cals:"+calNames.length);
Log.i("Names of calendar:", "Cal names:"+calNames.toString());
for (int i=0; i<calNames.length; i++)
{
calIds [i] = cursor.getInt(0);
calNames[i] = cursor.getString(1);
cursor.moveToNext();
Log.i("Calendar", "Cal_id:"+calIds[0]);
Log.i("Calendar", "Cal_Name:"+calNames[0]);
}
cursor.close();
ContentResolver cr = getContentResolver();
if(calIds.length > 0)
{
Log.i("in if condition", "Of calIds.length");
Calendar cal = Calendar.getInstance();
Date birth_date = null;
for (int i = 0; i < final_list.size(); i++)
{
obj = final_list.get(i);
String dateFromDB = obj.getmBirthday();
SimpleDateFormat parser = new SimpleDateFormat("MM/dd/yyyy");
try
{
birth_date = parser.parse(dateFromDB);
}
catch (java.text.ParseException e)
{
e.printStackTrace();
}
// event insert
int cal_id = calIds[0];
ContentValues values = new ContentValues();
values.put("calendar_id", cal_id);
Log.i("Calendar", "Cal_ID:"+cal_id);
values.put("title", obj.getmName());
Log.i("Title", "Title:"+obj.getmName());
values.put("dtstart", birth_date.getTime());
values.put("dtend", birth_date.getTime() + 1800*1000);
values.put("duration", 1800*1000 );
values.put("description", "Birthday Reminder");
values.put("allDay", 1);
values.put("rrule", "FREQ=YEARLY");
values.put("visibility", 0);
values.put("hasAlarm", 1);
cr.insert(Uri.parse("content://com.android.calendar/events"), values);
}
}
}
ボタンクリックでこのメソッドを使用しました。ボタンをクリックすると、イベントの ArrayList が Android デバイスのデフォルト カレンダーに追加されます。しかし、このコードでは、カレンダーに追加されたイベントを確認できません。そして、カレンダーにエントリが追加されていないとさえ思います。ありがとうございました。