2016-08-02 24 views
1

In meiner Android App habe ich den Code zum Schreiben, Aktualisieren und Löschen von Ereignissen von/zu Kalendern.Abrufen und Filtern von Ereignissen aus Google Kalender

Jetzt möchte ich einige Ereignisse aus einem Kalender abrufen, aber ich kenne die Ereignis-IDs nicht. Ich möchte Ereignisse nach Titel, Beschreibung oder einem anderen Wert filtern.

Wie kann ich das tun?

Mein Code:

public static void getEvents(Activity mContext) { 

     Uri.Builder builder = Uri.parse("content://com.android.calendar/instances/when").buildUpon(); 
     long now = new Date().getTime(); 
     ContentUris.appendId(builder, now - DateUtils.DAY_IN_MILLIS * 10000); 
     ContentUris.appendId(builder, now + DateUtils.DAY_IN_MILLIS * 10000); 

     String selection = "((calendar_id = ?) AND (description LIKE ?))"; 
     String[] selectionArgs = new String[] {""+id, "'%abc%'"}; 

     Cursor eventCursor = contentResolver.query(builder.build(), 
       new String[] { "title", "begin", "end", "allDay", "description"}, 
       selection, selectionArgs, 
       "startDay ASC, startMinute ASC"); 

     while (eventCursor.moveToNext()) { 
      String eventTitle = eventCursor.getString(0); 
      String description = eventCursor.getString(4); 
     } 

} 

Wenn ich filtern, indem Sie Kalender-ID nur - es funktioniert und ich alle Ereignisse in diesem Kalender. Wenn ich versuche, "AND description =?" Hinzuzufügen, erhalte ich 0 Ereignisse, obwohl ich weiß, dass in der Beschreibung Ereignisse mit der Zeichenfolge enthalten sind.

Antwort

0

Kalender-API hat Freebusy query, wo Sie einen Filter zwischen Daten unter Verwendung timeMin und timeMax führen. Überprüfen Sie diese SO thread für tatsächliche Codebeispiel.

Wenn Sie eine Abfrage basierend auf Ihren Einstellungen (Titel usw.) durchführen möchten, müssen Sie Ihre eigene benutzerdefinierte Implementierung erstellen. Sie können versuchen, zuerst alle Ereignisse abzurufen und dann Ihre eigene benutzerdefinierte Abfrage für die Antwort zu erstellen.