samsung - ¿Cómo consultar eventos del calendario de Android para un rango de fechas específico?
google calendar (1)
Estoy consultando la tabla de eventos en Android para obtener eventos.
String[] projection = new String[] { "calendar_id", "title", "description",
"dtstart", "dtend", "eventLocation" };
Cursor cursor = cr.query(Uri.parse("content://com.android.calendar/events"),
projection,
null,
null,
null);
Esto devuelve todos los eventos. Pero ahora quiero eventos solo en duración específica, digamos del 4/03/2013 al 7/03/2013. ¿Cómo uso la selection
y la selectionArgs[]
? Intenté esto
String selection = "((dtstart <= ?) AND (dtend >= ?))";
String[] selectionArgs = new String[] {startString, endString};
Pero no devuelve nada. Mi duda es 1. ¿Funcionará la cláusula where? Porque, startDate y endDate primero se convierten en long (milisegundos) y luego en String y luego se almacenan en la tabla. Entonces, ¿cómo se pueden comparar las cadenas por sus valores largos? No hay función toNumber()
en sqlite. 2. Si estoy pasando selectionArgs
entonces startString
y endString
deberían estar en qué formato?
startString
y endString
deben pasar en millis. Intenta usar:
Calendar c_start= Calendar.getInstance();
c_start.set(2013,2,4,0,0); //Note that months start from 0 (January)
Calendar c_end= Calendar.getInstance();
c_end.set(2013,2,7,0,0); //Note that months start from 0 (January)
Además, creo que su lógica está invertida, el rango de fechas debería ser así:
String selection = "((dtstart >= "+c_start.getTimeInMillis()+") AND (dtend <= "+c_end.getTimeInMillis()+"))";