Pokazywanie postów oznaczonych etykietą API. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą API. Pokaż wszystkie posty

poniedziałek, 19 lipca 2010

Problemy z kontaktami w telefonie - czyli stare i nowe Contacts API

Dostałem dziś informację, że program "Który Operator?", który rozwijam nie działa poprawnie na telefonie HTC Desire (dziękuję Rafałowi za zgłoszenie błędu zamiast po prostu odinstalowanie programu :). 

O co chodzi? Problem polega na tym, że program nie wyświetla wszystkich kontaktów w telefonie, a jedynie te z konta Google. Po wymianie kilku e-maili, chwili wyszukiwania oraz pytaniu na grupie PLAG okazało się, że HTC Desire ma swoją własną aplikację do zarządzania kontaktami zamiast tej domyślnej z Androida 2.1:
 
(po lewej aplikacja kontaktów z HTC Desire, po prawej czysty Android 2.x)

Podczas zapisu kontaku w aplikacji na HTC Desire użytkownik może wybrać gdzie kontakt ma być zapisany (telefon, karta sim, albo kontakty Google). Okazało się, że kontakty zapisane "w telefonie" nie są widoczne w programie "Który Operator?"

Zacząłem więc się zastanawiać co jest nie tak. Kontakty w programie pobieram za pomocą "starego" API (program powstał zanim została wydana wersja 2.0, poza tym powinien być kompatybilny wstecz). Na moim Nexusie działał bez problemu, nie miałem też innych sygnałów że coś jest nie tak więc nie było powodu by cokolwiek zmieniać:


Postanowiłem więc sprawdzić czy to kwestia używania starego API. Przepisałem więc metodę pobierającą kontakty za pomocą nowego API:


Sprawdziłem na swoim telefonie - pobierają się te same kontakty co za pomocą starego API. Połowa sukcesu. Na grupie PLAG znalazłem chętnych do przetestowania zmian (dzięki!). Okazało się, że problem był właśnie w użyciu starego API. Za pomocą nowego API wszystkie kontakty czytają się bez problemu. Dzięki Matuszowi Grzechocińskiemu z PLAG za testy nowego API na HTC Desire, wszystkie 3 rodzaje kontaktów są poprawnie odczytywane w programie:

 
(po prawej można zobaczyć nadchodzącą nową wersję programu Który operator?)

Do tej pory nie miałem motywacji by korzystać z nowego API - przecież stare jest kompatybilne a pozwala dotrzeć do większej liczby urządzeń. Jak się okazuje nie do końca i warto korzystać z nowszego API. Pozostaje decyzja czy pisać na urządzenia z Androidem >= 2.0 czy też rzeźbić za pomocą refleksji - chyba spróbuję refleksji by poznać coś nowego. I pewnie kiedyś pojawi sięo tym wpis na blogu.