AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Mit Delphi auf Android Handy Kalender auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Mit Delphi auf Android Handy Kalender auslesen

Ein Thema von sko1 · begonnen am 5. Mär 2018 · letzter Beitrag vom 6. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 07:58
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
  Mit Zitat antworten Zitat
SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 08:51
https://stackoverflow.com/questions/...dar-and-events
http://www.synaptica.info/en/2014/10...event-android/

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:

https://developers.google.com/google-apps/calendar/
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 09:33
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 10:34
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
Google doch mal "query events from android calendar".
Die gefundenen Treffer auf Stack Overflow oder in der offiziellen Doku (https://developer.android.com/guide/...uery-instances) sollten dich eigentlich weiterbringen.
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.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 11:14
Zitat:
Für das erste wäre es wahrscheinlich sinnvoll, wenn du die CalendarEventsManager-Unit studierst und entsprechend erweiterst.
Studiert habe ich die, aber erweitern?
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:
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;
was muss denn da in die projection.Items rein und wie bekomme ich die Termine und nicht nur deren Anzahl?
Irgendwie ist das Ganze für mich noch ein Rätsel...

Ciao
Stefan
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 12:11
Delphi-Quellcode:
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;
Einfach das Beispiel aus meinen Link in Delphi umsetzen, ist nicht so schwer.
  Mit Zitat antworten Zitat
SebastianZ

Registriert seit: 23. Jul 2009
89 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 12:28
...

Der dritte Link ist, wenn ich das richtig sehe, eine Java-Anwendung, ich möchte mit D2010 Delphi auslesen

...
Stimmt so nicht, es ist auf dieser Seite die Web-API zu finden, und ein Webinterface ist nicht sprachenspezifisch. Es gibt nur keine Beispiele in Delphi auf deren Seite, aber es lässt sich auf alle Fälle mit Indy anbinden.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 12:42
Delphi-Quellcode:
  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);
und da beginnen meine Probleme : TokTitle, TokDTStart, ... sind meinem Delphi unbekannt!
Wenn ich das richtig verstehe sind das die Spaltennamen, finde aber keine Auflistung was da verwendet wird!

Ciao
Stefan
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 13:16
und da beginnen meine Probleme : TokTitle, TokDTStart, ... sind meinem Delphi unbekannt!
Wenn ich das richtig verstehe sind das die Spaltennamen, finde aber keine Auflistung was da verwendet wird!
Ich muss leider plakativ fragen:
Die offizielle Android-Dokumentation ist dir bekannt und du weißt, wie man innerhalb einer Dokumentation navigiert und sucht?
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#10

AW: Mit Delphi auf Android Handy Kalender auslesen

  Alt 5. Mär 2018, 13:37
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz