HochschuleHofStundenplanapp / AndroidStundenplanHof

Android App
GNU General Public License v3.0
4 stars 0 forks source link

Kalendereinträge bei nicht lokalem Kalender doppelt #22

Closed GlaserDaniel closed 6 years ago

GlaserDaniel commented 6 years ago

Die Kalendereinträge in nicht lokalen Kalender sind doppelt vorhanden wenn der Nutzer die App deinstalliert bevor er die Kalender Synchronisation deaktiviert. Das liegt daran das die EventIDs bei der Deinstallation gelöscht werden und so die Events nicht mehr wieder gefunden werden können können.

Mögliche Lösung 1: Abfangen wenn der Nutzer die App deinstalliert und dort die Events aus dem Kalender löschen.

Die ist nicht so einfach möglich. Nur mit einem Broadcast Receiver bekommt man mit wenn der Nutzer im Dialog ist wo nachgefragt wird ob er die App deinstallieren möchte. Dort kann man nun die Events aus dem Kalender entfernen, aber falls der Nutzer dann doch auf "Abbrechen" klickt müsste man die Events wieder in den Kalender eintragen. Das der Nutzer auf "OK" klickt kriegt man schon nicht mehr mit da die App dann deinstalliert ist.

Mögliche Lösung 2: Die ID der Vorlesung mit ins Event speichern um das Event leichter wieder finden zu können.

Für das Speichern wird erstmal das Feld ORIGINAL_SYNC_ID genutzt. Bei der Kalendersynchronisation müssen dann alle Events, in einem gewissen Zeitraum, die in diesem Feld eine ID haben herausgesucht werden und aktualisiert werden.

Mögliche Lösung 3: Einen Kalender erzeugen der automatisch mit dem Google-Account des Nutzers synchronisiert wird.

Vielleicht geht dies mittels eines Syncadapter. Nachteil wäre allerdings das dann nur noch Kalender über den Google-Account synchronisiert werden können.

Erstmal wird nun an der Lösung 2 gearbeitet, aber vielleicht kann man mal die 3. Lösung umsetzen.

GlaserDaniel commented 6 years ago

Mittlerweile sollten die Einträge nicht mehr doppelt oder öfter vorkommen dafür scheint es jetzt ein neues Problem zu geben mit den EventIDs: Diese bleiben nicht gleich nachdem der SyncAdapter, der die Synchronisation des Kalenders in die Cloud übernimmt, über die Events gelaufen ist, da er die Events anscheinend entfernt und neu einträgt. Dadurch ändert sich die EventID und die Events können nicht mehr gefunden werden. (Außerdem wird anscheinend die ORIGINAL_SYNC_ID auch zurückgesetzt da sie nicht dafür vorgesehen ist, sondern ein Verweis auf die EventID des origanlen Events.)

Bisher noch keine Idee warum das so ist. Vielleicht muss was beim erzeugen der Events geändert werden damit sie synchronisiert werden ohne neu angelegt zu werden. Denn aktuell beinhalten sie eine Information das sie eigentlich für lokale Kalender gedacht sind, vielleicht macht das Probleme. (ohne diese Information würden sie direkt wieder gelöscht werden) Wahrscheinlich müsste man das Synchronisieren des Stundenplans auch mit einem solchen SyncAdapter umsetzen, damit es solche Probleme nicht gibt, nur gibt es dazu keine Doku wie es bei einem Kalender aussieht, sondern nur für Kontakte. Das wäre wohl noch eine Menge Arbeit es in einen SyncAdapter umzubauen. Außerdem müsste so ein SyncAdapter für die Synchronisation von einem Client zu einem Server gedacht sein und nicht lokal.

Notlösung wäre die Events anhand von Title, Tag, Uhrzeit zu suchen und so zu updaten oder zu löschen.

avinotec commented 6 years ago

gefixt