Einzelnen Beitrag anzeigen

zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.633 Beiträge
 
Delphi 12 Athens
 
#1

Android Calendar instances auslesen

  Alt 22. Mär 2016, 19:34
Hallo,

ich möchte Termine aus dem Android Kalender auslesen. Das geht soweit, nur dass ich die Wiederholtermine nicht auslesen kann. Nach einigen Recherchen soll man nicht die Events auslesen, sondern die Instances.
So in der Art kann ich die Kalenderdaten auslesen. Aber wenn man die Uri auf
"content://com.android.calendar/instances/when" ändert und die Projection Werte anpaßt, geht das nicht. Bei einigen Android Beispielen soll man in der Art "query(ContentResolver cr, String[] projection, long begin, long end)" auslesen, aber da komme ich mit dem bestehenden Quelltext nicht klar.
Hat jemand eine Idee, wie ich an die Instances komme?


Delphi-Quellcode:
Function GetCalEvents(DTNow: TDateTime): Boolean;
var
  Cursor: JCursor;
  l_eventUri: Jnet_Uri;
  SortOrder : JString;
  Selection: JString;
  SelectionArgs: TJavaObjectArray<JString>;
  l_projection: TJavaObjectArray<JString>;
  sSQLEventAbfrage : String;
  EventCount: integer;
  EventId : integer;


begin

  Result := False;

  l_eventUri := StrToJURI('content://com.android.calendar/events');
  l_projection := TJavaObjectArray<JString>.Create(8);
  l_projection.Items[0] := StringToJString(TokTitle);
  l_projection.Items[1] := StringToJString(TokDTStart);
  l_projection.Items[2] := StringToJString(TokDTEnd);
  l_projection.Items[3] := StringToJString(TokEventTimeZone);
  l_projection.Items[4] := StringToJString(TokHasAlarm);
  l_projection.Items[5] := StringToJString(TokOriginal_ID);
  l_projection.Items[6] := StringToJString(TokAllDay);
  l_projection.Items[7] := StringToJString(TokID);

  SortOrder := StringToJString('dtstart ASC, dtend ASC'); //vom ältesten zum neuesten Eintrag

  Selection := nil;

  Selection := StringToJString(sSQLEventAbfrage);
  SelectionArgs := nil; // im Moment nicht genutzt

  //hier die Abfrage der Termine im jeweiligem Zeitraum
  Cursor := TAndroidHelper.Activity.getContentResolver.query(l_eventUri, l_projection, Selection, SelectionArgs, SortOrder);

  if not Assigned(Cursor) then begin
    Log('GetCalEvents not Assigned(Cursor)',[]);
    Exit;
  end;

  EventCount := Cursor.getCount;
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat