No Android, antes do Ice Cream Sandwich, não há uma API oficial para lidar com eventos de calendário de maneira programática. Mas lidar com eles não é muito difícil, aqui está uma pequena dica (você pode descobrir que também em stackoverflow http://stackoverflow.com/questions/9482514/android-calendar-get-event-id/9749833#9749833 eu sou o autor de pergunta e resposta).
É bom saber que o calendário é baseado em sqlite.
Primeiro extraí uma lista de colunas usadas para armazenar eventos no calendário do Android. Aqui está a lista:
[0] “originalEvent” (id = 830007842672)
[1] “statusDisponibilidade” (id = 830007842752)
[2] “ownerAccount” (id = 830007842840)
[3] ” sync account_type” (id = 830007842920)
[4] “visibilidade” (id = 830007843008)
[5] “regra” (id = 830007843080)
[6] “lastDate” (id = 830007843144)
[7] “hasAlarm” (id = 830007843216)
[8] “guestsCanModify” (id = 830007843288) [9] “guestsCanSeeGuests” (id = 830007843376)
[10] “exrule” (id = 830007843464)
[11] “rdate” (id = 830007843528)
[12] “transparência” (id = 830007843592)
[13] “fuso horário” (id = 830007843672)
[14] “selecionado” (id = 830007843744)
[15] “dtstart” (id = 830007843816) [16] “título” (id = 830007843888)
[17] ” tempo de sincronização ” (id = 830007843952)
[18] “_id” (id = 830007844024) [19] “hasAttendeeData” (id = 830007844088)
[20] ” id de sincronização ” (id = 830007844176)
[21] “commentsUri” (id = 830007844248)
[22] “descrição” (id = 830007844328)
[23] “htmlUri” (id = 830007844408)
[24] ” sincronizar conta” (id = 830007844480)
[25] ” versão de sincronização ” (id = 830007844560)
[26] “hasExtendedProperties” (id = 830007844640)
[27] “calendar_id” (id = 830007844736)
Então, se eu quiser obter o novo id de evento para meu evento:
public static long getNewEventId(ContentResolver cr, Uri cal_uri){
Uri local_uri = cal_uri;
if(cal_uri == null){
local_uri = Uri.parse(calendar_uri+"events");
}
Cursor cursor = cr.query(local_uri, new String [] {"MAX(_id) as max_id"}, null, null, "_id");
cursor.moveToFirst();
long max_val = cursor.getLong(cursor.getColumnIndex("max_id"));
return max_val+1;
}
E para inserir evento:
public void insertDomainEntry(Date exp_date, String name, long event_id){
SQLiteDatabase db = getWritableDatabase();
ContentValues values = new ContentValues();
values.put("exp_date", exp_date.getTime()/1000);
values.put("event_id", event_id);
values.put("domainname", name);
db.insertOrThrow("domains_events", null, values);
}
Essa solução parece funcionar, mesmo que provavelmente não seja uma solução muito boa.