Pracuję na Androidzie 2.0 i próbuję otrzymać listę wszystkich kontaktów.
Ponieważ android.provider.Contacts.People jest przestarzały, muszę używać android.provider.ContactsContract , ale nie mogę znaleźć odpowiedniego przykładu, jak go używać (np. Pobrać listę wszystkich kontaktów z książki telefonicznej).
Czy ktoś wie, gdzie znaleźć taki przykład?
android
contacts
android-2.0-eclair
appme up
źródło
źródło
Odpowiedzi:
Najpierw upewnij się, że dodałeś
do pliku AndroidManifest.xml, a następnie możesz przeglądać kontakty w telefonie w następujący sposób:
Dodatkowo możesz przeglądać swoje kontakty i po prostu uzyskać imię i nazwisko oraz numer telefonu w następujący sposób:
Ponadto, jeśli chcesz uzyskać takie rzeczy, jak notatki od kontaktu, musisz użyć innego identyfikatora URI, na przykład poniższego (możesz skorzystać z tej metody):
Zauważ, że tym razem użyłem nie tylko identyfikatora kontaktu, ale także typu MIME dla zapytania.
źródło
Wspaniale jest zobaczyć przydatne informacje, frustrujące jest to, jak słabo ten ważny temat jest omawiany w dokumentach i tym podobnych. Po zbyt długim włamywaniu się na ten temat pomyślałem, że również podzielę się małym kodem. Poniższy kod jest trochę ładniejszy i pozwala to zrobić wydajniej.
Powyższy fragment kodu zwraca kursor wskazujący na wynikowe zapytanie zawierające tylko te wiersze, które mają numer telefonu. Jest to miłe, ponieważ zazwyczaj masz wiele kontaktów bez numerów. Ponadto PROJEKCJA ogranicza ilość zwracanych danych.
Powyższa porcja zawiera numer telefonu powiązany z każdym identyfikatorem kontaktu, który ma numer telefonu. Przechowuję wszystkie informacje w tabeli skrótów i kluczową wartością numeru telefonu. Usunąłem również numer telefonu ze wszystkich informacji bez cyfr. Z jakiegoś powodu, mimo że ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER jest poprawne, jeśli włączysz to w argument projekcji, powoduje to przerwanie zapytania, nie wiem dlaczego i jest to frustrujące.
Druga część powyższego kodu jest zbyt wolna, wszystkie wywołania zapytań po prostu wszystko utrudniają. Poniższy kod jest znacznie szybszy. Po prostu weź wszystkie wiersze zawartości telefonu i użyj contact_ids, aby posortować żądane dane.
Otrzymujesz hashtable ze wszystkimi informacjami, które chcesz. Oczywiście możesz umieścić dowolne informacje w strukturze danych. Drugi sposób jest znacznie szybszy.
źródło
ContactsContract.Data.DISPLAY_NAME
) w swojej projekcji; wtedy nie musiałbyś wykonywać niechlujnego symulowanego łączenia w Javie.Po prostu chcę dodać, gdy pobierasz kontakty, możesz dostać wiele "śmieciowych" kontaktów - na przykład niektóre adresy e-mail, które użytkownik ma w pewnym momencie, wyślą e-mail, ale nie są zagregowane ... Jeśli chcesz tylko kontakty widoczne dla użytkownika, tak jak we własnej aplikacji kontaktów Androida, musisz ograniczyć wybór tylko do IN_VISIBLE_GROUP.
źródło
Myślę, że ważne jest, aby kod z tego adresu URL http://coderzheaven.com/2011/06/get-all-details-from-contacts-in-android/ na StackOverflow był czasem przyczyną utraty takich linków.
wyróżniony tekst
źródło
Znalazłem bardzo łatwe rozwiązanie do czytania kontaktów. (nudne jest pisanie kodu do odczytu każdej wartości, więc dobrze jest użyć klasy opakowującej dla kontaktów)
Oczywiście
<uses-permission android:name="android.permission.READ_CONTACTS"/>
ContactList.java
Contact.java
Address.java
Email.java
Im.java
Organization.java
Phone.java
ContactAPI.java
ContactAPISdk5.java
ContactAPISdk3.java
Uwaga : nie zapomnij zmienić nazwy pakietu
*******
.Źródło (link można umrzeć w dowolnym momencie :))
źródło
Połóż to ....
Daj mi znać, jeśli jakiś problem.
źródło
Ta część nie zadziała dla mnie:
Jeśli jednak tego używam, robi to:
źródło
Możesz skorzystać z przykładu „ContactManager” ze strony programisty Androida (LUB) Przejdź do lokalizacji, w której ustawiłeś ścieżkę pobierania android-sdk w swoim systemie. W folderze android-sdk-mac_x86 / samples / android-10 można zobaczyć przykład „ContactManager”.
Próbowałem użyć tego przykładu, działał dobrze w mojej aplikacji.
źródło
Używam Samsunga Galaxy Note 4 i nie wiem, dlaczego żadna z powyższych nie zadziałała. Pomieszałem trochę i sprawiłem, że się obudziłem ...
źródło