Tagesaktuelle Benachrichtigung über Geburtstage und anstehende Termine?

C

cramu

Dauergast
312
Nachdem ich morgens den Wecker deaktiviert habe, möchte ich mir gern alle Geburtstage und Termine des Tages in der Benachrichtigungsleiste anzeigen lassen.

Der erste Teil mit den Geburtstagen klappt bereits einigermaßen:
Ich lese per AutoContacts die Kontaktdaten aus und erhalte dann eine Benachrichtigung nach dem Schema 'Max Mustermann wird heute 33 Jahre alt'.
Optional könnte ich noch Actionbuttons hinzufügen, um den Max anzurufen oder ihm eine (vordefinierte) SMS zu schicken.
Das Problem hierbei ist aber, dass AutoContacts nur Variablen für den ersten Kontakt ausgibt der Geburtstag hat, sollte es also noch ein zweites oder drittes Geburtstagskind geben, ist die Chance hoch, dass es vergessen wird.
Meine Idee wäre nun, die Daten, welche AutoContacts ermittelt, in einer Datei zu speichern, auf welche der Tasker dann zugreift um daraufhin alle Geburtstage des Tages in der Benachrichtigung anzuzeigen.
Leider habe ich nur keine Idee, wie ich das realisieren kann.
Ich hab den Task mal gespoilert (relevant sind hier A11 - A14), vielleicht arbeitet ja noch jemand mit AC und kann mir den entscheidenden Hinweis geben?

Code:
Task: Schlafmodus deaktivieren (23)
A1: AutoAlarm [ Configuration:No configuration needed Package:com.joaomgcd.autoalarm Name:AutoAlarm Timeout (Seconds):5 Continue Task After Error:On ] 
A2: Variable Set [ Name:%Minuten To:%minutes Do Maths:Off Append:Off ] 
A3: Variable Split [ Name:%Minuten Splitter:, Delete Base:Off ] 
A4: If [ %Minuten1 < 11 ]
A5: Say [ Text:Schlummern bis %hour Uhr %minute . Engine:Voice:default:default Stream:5 Pitch:5 Speed:5 Respect Audio Focus:On Continue Task Immediately:On Continue Task After Error:On ] 
A6: Else 
A7: Perform Task [ Name:Zeitansage Stop:Off Priority:5 Parameter 1 (%par1): Parameter 2 (%par2): Return Value Variable: ] 
A8: If [ %SCHLAFMODUS ~ 1 ]
A9: Variable Set [ Name:%SCHLAFMODUS To:0 Do Maths:Off Append:Off ] 
A10: Send Intent [ Action:com.rageconsulting.android.lightflow.SLEEP_OFF Cat:None Mime Type: Data: Extra: Extra: Package: Class: Target:Broadcast Receiver Continue Task After Error:On ] 
A11: AutoContacts [ Configuration:Refresh: true
Order By: Next Event Date Package:com.joaomgcd.autocontacts Name:AutoContacts Timeout (Seconds):1000 Continue Task After Error:On ] 
A12: Variable Set [ Name:%Tage To:%acdaystoevent Do Maths:Off Append:Off ] 
A13: Variable Split [ Name:%Tage Splitter:, Delete Base:Off ] 
A14: AutoNotification [ Configuration:Title: Geburtstag
Text: %acname wird heute %acyearssinceevent Jahre alt.
Icon: %acpicturefile
Status Bar Icon: content_event Package:com.joaomgcd.autonotification Name:AutoNotification Timeout (Seconds):0 Continue Task After Error:On ] If [ %Tage1 ~ 0 ]
A15: Secure Settings [ Configuration:Airplane Mode Disabled Package:com.intangibleobject.securesettings.plugin Name:Secure Settings Timeout (Seconds):0 Continue Task After Error:On ] 
A16: End If 
A17: End If 
A18: Alarm Volume [ Level:1 Display:Off Sound:Off ] If [ %WLAN ~ 1 ]
A19: gReader [ Configuration:SYNCHRONIZE | Alle Artikel Package:com.noinnion.android.greader.reader Name:gReader Timeout (Seconds):0 Continue Task After Error:On ]

Den Part mit dem Terminen finde ich noch ungleich schwieriger:
Dank eines Beitrags von @Erebos im Homescreen-Thread scheint es mir am sinnvollsten, die Datenbank der Kalenderapp auszulesen, die Daten nach Kalender und Datum zu filtern und die Ergebnisse für die Benachrichtigung zu nutzen.
Da ich mich mit diesen Datenbankgeschichten bisher aber noch nicht auseinandergesetzt habe, wäre ich auch hier für eine kleine Starthilfe dankbar!
 
Na da hast du aber Glück, dass Tapatalk mich auf deinen Post hingewiesen hat. Wenn du root hast, ist das kein Problem. Die Geburtstage sind ja ein eigener Kalender, heißt glaube ich Geburtstage meiner Kontakte. Die SQL Anfrage kann ich dir morgen gerne hier Posten.
Schick mir eine Pn wenn ich das vergesse. Ich habe gerade kein PC zur Verfügung.
Hier mal meine Anfrage. Im Prinzip müsste man nur noch eine Bedingung einfügen für die Kalender _ id denn bei mir Listet es die nächsten 6 Termine alle Kalender.
Die Kalender_id lese ich mit aus, um die Termin Farbe zu steuern.

sqlite3 /data/data/com.android.providers.calendar/databases/calendar.db

select strftime('|%d. %m.|%H:%M',dtstart/1000,'unixepoch', 'localtime'), strftime('|%d. %m.|%H:%M',dtend/1000,'unixepoch', 'localtime'), title, calendar_id from events where datetime('now')


Morgen erkläre ich dir das genauer und sage dir welches Tool ich verwende um die Anfragen zu erstellen. Tasker eignet sich dafür nicht, das macht man besser am PC und kopiert die Anfrage dann am Ende nur.
 
Zuletzt bearbeitet von einem Moderator:
Das wäre nett, denn die zweite Zeile sagt mir erstmal nichts.
 
Haha, ga nicht so schlimm! Um das mal auszuprobieren lade dir mal SQLiteman von hier runter: <click mich>

Installieren muss man das nicht, nur die Exe ausführen.

Dann kopiere deine calendar.db

aus diesem Verzeichnis:

/data/data/com.android.providers.calendar/databases/calendar.db

auf deinen PC.

Dann öffne die Datei mit SQLiteman.

Dann sollte das so aussehen wie im angehängten Bild. Links siehst du alle Tabellen, die in der Datenbank abgelegt sind. Die die dich interessiert ist die Tabelle events.
Willst du nun den Inhalt dieser Tabelle sehen musst du wie ich im screenshot eine erste einfache SQL Anfrage stellen, nämlich:

Select * from events

Damit listet er dir alle Spalten in der Tabelle auf und du kannst schon mal suchen welche du in Tasker brauchen wirst.

Sag Bescheid wenn du soweit zurecht kommst, dann schreib ich weiter.
Ich muss jetzt los.
 
Hatte heute mal Zeit zum Ausprobieren und es hat soweit alles problemlos geklappt.

IDs der gewünschten Kalender sind 1 und 4.
 
Zuletzt bearbeitet:

Ähnliche Themen

T
Antworten
29
Aufrufe
3.017
Ti-ejtsch
T
X
Antworten
4
Aufrufe
318
xyzUpdate
X
V
Antworten
11
Aufrufe
839
Cecoupeter
Cecoupeter
Zurück
Oben Unten