10

Korzystam z dostawcy Kalendarza na Androida, aby wyświetlać wydarzenia. Powiążę także zdarzenia z obrazami z lokalnej bazy danych aplikacji, używając EVENT_ID zdarzenia jako punktu odniesienia.Dostawca kalendarza systemu Android: Czy istnieje unikalny identyfikator zdarzeń, który można wykorzystać na wielu urządzeniach?

Zastanawiam się teraz, czy możliwe jest zachowanie tego samego odniesienia na wielu urządzeniach?

Rozumiem, że dla konta account_type = "com.google", GoogleCalendarSyncAdapter używa CalendarContract.EventsColumns.SYNC_DATA1 do przechowywania identyfikatora googleID zdarzenia. Jednak wydaje się, że nie jest to niezawodny sposób dostępu do danych, ponieważ użycie kolumny SYNC_DATA może się zmienić w dowolnym momencie i może być modyfikowane tylko przez SyncAdapter.

Czy istnieje inny sposób, w jaki mogę zachować odniesienie do zdarzenia dostawcy kalendarza na różnych urządzeniach?

Odpowiedz

1

wklejenia obrazu ID język wydarzeń

Jakiś czas temu miałem podobny problem z CalendarContract i rozwiązać go osadzając unikalny tag UID w tekście opisu zdarzenia. Klienci będą analizować ten znacznik i pobierać typowy identyfikator UID. Ten identyfikator jest generowany na jednym z klientów używających klasy Java UUID. Jednak w moim przypadku bardziej interesowało mnie identyfikowanie wydarzeń utworzonych za pomocą mojej aplikacji.

W twoim przypadku zakładam, że odniesienia do bazy danych obrazów są stabilnymi identyfikatorami, które są spójne we wszystkich instalacjach aplikacji. Można wstawić znak do tekstu opisu zdarzenia, które odwołuje się do obrazu z DB, takie jak:

<myapp:imgid_1234> 

Ewentualnie można również dodać specjalny „typ zasobu” attendee do zdarzenia, które dodaje, że obraz odniesienia do zdarzenia : [email protected]. Ta opcja sprawi, że opis zdarzenia będzie czysty i może zmniejszyć przypadkowe usunięcie przez użytkownika.

+0

Dzięki, to jest trochę hackowania, ale chyba jedyny sposób na zrobienie tego. Problem polega na tym, że inne aplikacje mogą wyświetlać, modyfikować lub usuwać uczestnika, więc prawdopodobnie nie jest to warte ryzyka. –

+1

@ ChristusMasser Nie martw się o inne aplikacje, martw się o użytkownika i powiedz mu, aby nie usuwał tych automatycznie generowanych uczestników, ponieważ leży to w ich własnym interesie. Z punktu widzenia interfejsu CalendarContract API - według mojej wiedzy - nie ma innego sposobu dodawania meta-informacji do zdarzenia. Tylko SyncAdapters ma ten przywilej. Możesz jednak interfejsować interfejs API Kalendarza Google bezpośrednio i użyć obiektu 'extendedProperties', który może zawierać pary dowolnych danych dla danej aplikacji. Zobacz tutaj: https://developers.google.com/google-apps/calendar/v3/reference/events – tiguchi

Powiązane problemy