![]() |
Mit Delphi auf Android Handy Kalender auslesen
Hallo,
nun google ich seit Tagen aber komme nicht weiter: Mein Ziel ist es, auf einem Handy aus dem (den) Kalender(n) alle Termine auszulesen und mit anderen Terminen meiner App zusammen darzustellen. Beispiele zum Schreiben von Terminen mit der CalendarEventsManager.pas habe ich gefunden und erfolgreich neue Termine erstellt, aber das ist nicht das Ziel, ich möchte bestehende bereits vorhandene Termine auslesen! Hätte bitte jemand einen Tip/Link/Beispielsource für mich? Ciao Stefan |
AW: Mit Delphi auf Android Handy Kalender auslesen
![]() ![]() Versuchs mal mit der JCalendar-Klasse. Ein alternativer Ansatz, der dann auch für andere OS funktioniert, währe es den Google - Kalender über die Web-API anzusprechen: ![]() |
AW: Mit Delphi auf Android Handy Kalender auslesen
Danke für die Links, welche mich leider nicht weiter bringen:
Die ersten beiden kannte ich bereits, sie schreiben Termine in den Kalender, ich aber möchte alle bestehenden Termine lesen! Der dritte Link ist, wenn ich das richtig sehe, eine Java-Anwendung, ich möchte mit D2010 Delphi auslesen :-( Ciao Stefan |
AW: Mit Delphi auf Android Handy Kalender auslesen
Zitat:
Die gefundenen Treffer auf Stack Overflow oder in der offiziellen Doku ( ![]() Wenn du Hilfe brauchst, den Java-Quelltext nach Delphi zu portieren, kann man sicherlich bei konkreten Problemen helfen. Für das erste wäre es wahrscheinlich sinnvoll, wenn du die CalendarEventsManager-Unit studierst und entsprechend erweiterst. |
AW: Mit Delphi auf Android Handy Kalender auslesen
Zitat:
Genau da liegt doch der Knackpunkt : wie? Ich habe da noch einen Codeschnipsel gefunden, finde aber nicht heraus wie ich die Werte belegen muss:
Delphi-Quellcode:
was muss denn da in die projection.Items rein und wie bekomme ich die Termine und nicht nur deren Anzahl?
Function TForm1.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; end; Irgendwie ist das Ganze für mich noch ein Rätsel... Ciao Stefan |
AW: Mit Delphi auf Android Handy Kalender auslesen
Delphi-Quellcode:
Einfach das Beispiel aus meinen Link in Delphi umsetzen, ist nicht so schwer.
Function TForm1.GetCalEvents(DTNow: TDateTime): Boolean;
var Cursor: JCursor; l_eventUri: Jnet_Uri; SortOrder: JString; Selection: JString; SelectionArgs: TJavaObjectArray<JString>; l_projection: TJavaObjectArray<JString>; sSQLEventAbfrage, title: 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 else begin while Cursor.moveToNext do begin title := Cursor.getString(0); // usw. usf. EventId := Cursor.getLong(7); end; end; EventCount := Cursor.getCount; Result := EventCount > 0; end; |
AW: Mit Delphi auf Android Handy Kalender auslesen
Zitat:
|
AW: Mit Delphi auf Android Handy Kalender auslesen
Delphi-Quellcode:
und da beginnen meine Probleme : TokTitle, TokDTStart, ... sind meinem Delphi unbekannt!
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); Wenn ich das richtig verstehe sind das die Spaltennamen, finde aber keine Auflistung was da verwendet wird! Ciao Stefan |
AW: Mit Delphi auf Android Handy Kalender auslesen
Zitat:
Die offizielle Android-Dokumentation ist dir bekannt und du weißt, wie man innerhalb einer Dokumentation navigiert und sucht? |
AW: Mit Delphi auf Android Handy Kalender auslesen
Muss ich plakativ antworten : welche Dokumentation meinst Du?
Ich habe die letzten Tage hunderte Seiten im Netz angesehen und übersehe vielleicht inzwischen auch vieles, so z.B. habe ich "DURATION" als Spaltenmöglichkeit gefunden was mir eine "Invalid Column" Exception beschert, da findet sich "_id" wie auch "_ID" aber z.B. "dtstart" bringt nur den Tag und nicht die Uhrzeit dazu, es wäre sehr hilfreich wenn Du mir den Dir bekannten Link zu einer passenden Dokumentation schreiben könntest! Was ich auch nicht herausfinden konnte ob bei diese Spaltennamen auch Groß/Kleinschreibung relevant ist. Danke Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz