Ich arbeite an Android 2.0 und versuche, eine Liste aller Kontakte zu erhalten.
Da android.provider.Contacts.People veraltet ist, muss ich android.provider.ContactsContract verwenden , aber ich kann kein geeignetes Beispiel für die Verwendung finden (z. B. eine Liste aller Kontakte im Telefonbuch abrufen).
Weiß jemand, wo man ein solches Beispiel findet?
android
contacts
android-2.0-eclair
Appme up
quelle
quelle
Antworten:
Stellen Sie zunächst sicher, dass Sie hinzugefügt haben
In Ihre AndroidManifest.xml-Datei können Sie dann Ihre Telefonkontakte wie folgt durchlaufen:
Darüber hinaus können Sie Ihre Kontakte durchlaufen und einfach den Namen und die Telefonnummer wie folgt abrufen:
Wenn Sie beispielsweise Notizen von einem Kontakt erhalten möchten, müssen Sie eine andere URI verwenden, wie die folgende (Sie können diese Methode auch verwenden):
Beachten Sie, dass ich diesmal nicht nur die Kontakt-ID, sondern auch den MIME-Typ für die Abfrage verwendet habe.
quelle
Es ist großartig, einige nützliche Informationen zu sehen. Es ist frustrierend, wie schlecht dieses wichtige Thema von Dokumenten und dergleichen behandelt wird. Nach zu viel Hacking dachte ich, ich würde auch ein wenig Code teilen. Der folgende Code ist etwas hübscher und erledigt das Gleiche effizienter.
Der obige Codeabschnitt gibt einen Cursor zurück, der auf die resultierende Abfrage verweist, die nur die Zeilen enthält, die eine Telefonnummer haben. Dies ist schön, da Sie normalerweise viele Kontakte ohne Nummern haben. Darüber hinaus begrenzt die PROJEKTION die zurückgegebene Datenmenge.
Der obige Block erhält die Telefonnummer, die jeder Kontakt-ID zugeordnet ist, die eine Telefonnummer hat. Ich speichere alle Informationen in einer Hash-Tabelle und mit einem Schlüsselwert der Telefonnummer. Ich habe auch die Telefonnummer aller nichtstelligen Informationen entfernt. Obwohl ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER gültig ist, wenn Sie in das Projektionsargument aufnehmen, dass die Abfrage unterbrochen wird, weiß ich aus irgendeinem Grund nicht, warum und es ist frustrierend, dass dies der Fall ist.
Der zweite Teil des obigen Codes ist zu langsam, alle Abfrageaufrufe machen einfach alles kaputt. Der folgende Code ist viel schneller. Nehmen Sie einfach alle Zeilen für den Telefoninhalt und sortieren Sie die gewünschten Daten mit den contact_ids.
Am Ende erhalten Sie eine Hashtabelle mit allen gewünschten Informationen. Natürlich können Sie beliebige Informationen in die Datenstruktur einfügen. Die zweite Möglichkeit ist viel schneller.
quelle
ContactsContract.Data.DISPLAY_NAME
) in Ihrer Projektion verwenden. Dann müssten Sie in Java keinen chaotischen simulierten Join ausführen.Ich möchte nur hinzufügen, dass beim Abrufen der Kontakte möglicherweise viele "Müll" -Kontakte angezeigt werden - beispielsweise einige E-Mail-Adressen, an die ein Benutzer irgendwann eine E-Mail gesendet hat, die jedoch nicht aggregiert sind ... Wenn Sie nur möchten Die für den Benutzer sichtbaren Kontakte, wie in der Androids-eigenen Kontaktanwendung, müssen Sie die Auswahl auf nur IN_VISIBLE_GROUP beschränken.
quelle
Ich denke, es ist wichtig, den Code von dieser URL http://coderzheaven.com/2011/06/get-all-details-from-contacts-in-android/ auf StackOverflow zu haben, da manchmal solche Links ausfallen.
hervorgehobener Text
quelle
Ich fand eine sehr einfache Lösung, um Kontakte zu lesen. (Es ist langweilig, Code zum Lesen jedes Werts zu schreiben, daher ist es gut, die Wrapper-Klasse für Kontakte zu verwenden.)
Natürlich
<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
Hinweis : Vergessen Sie nicht, stattdessen den Paketnamen zu ändern
*******
.Quelle (Link kann jederzeit sterben :))
quelle
Stell Dies ....
Lassen Sie mich wissen, wenn ein Problem vorliegt.
quelle
Dieser Teil würde für mich nicht funktionieren:
Wenn ich das aber benutze, tut es:
quelle
Sie können das Beispiel "ContactManager" von der Website des Android-Entwicklers verwenden (ODER). Gehen Sie zu dem Speicherort, an dem Sie den Pfad zum Herunterladen von android-sdk in Ihr System festgelegt haben. Im Ordner android-sdk-mac_x86 / samples / android-10 sehen Sie das Beispiel "ContactManager".
Ich habe versucht, dieses Beispiel zu verwenden, hat in meiner Anwendung gut funktioniert.
quelle
Ich verwende Samsung Galaxy Note 4 und weiß nicht, warum keines der oben genannten Verfahren für mich funktioniert hat. Ich mischte einige und machte dieses Wachen ..
quelle