Ich habe viele Beiträge durchgelesen, aber keine Antwort gefunden, die die Frage effizient oder sogar richtig beantwortet. Die nächste, die ich kam, war diese How to avoid duplicate contact name (data) while loading contact info to listview?, aber das hat zu viel Aufwand. Gibt es eine einfachere oder effizientere Lösung?Android: Doppelte Kontaktdaten beim Abrufen von Kontakten mit ContactsContract.CommonDataKinds.Phone
Android: Doppelte Kontaktdaten beim Abrufen von Kontakten mit ContactsContract.CommonDataKinds.Phone
Antwort
Ich hatte das gleiche Problem, das Sie hatten: Ich bekam doppelte Telefonnummern. Ich löste dieses Problem, indem ich die normalisierte Zahl für jeden Cursor-Eintrag erhielt und HashSet
verwendete, um zu verfolgen, welche Zahlen ich bereits gefunden hatte. Versuchen Sie Folgendes:
private void doSomethingForEachUniquePhoneNumber(Context context) {
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER,
//plus any other properties you wish to query
};
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, null, null, null);
} catch (SecurityException e) {
//SecurityException can be thrown if we don't have the right permissions
}
if (cursor != null) {
try {
HashSet<String> normalizedNumbersAlreadyFound = new HashSet<>();
int indexOfNormalizedNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NORMALIZED_NUMBER);
int indexOfDisplayName = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexOfDisplayNumber = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
while (cursor.moveToNext()) {
String normalizedNumber = cursor.getString(indexOfNormalizedNumber);
if (normalizedNumbersAlreadyFound.add(normalizedNumber)) {
String displayName = cursor.getString(indexOfDisplayName);
String displayNumber = cursor.getString(indexOfDisplayNumber);
//haven't seen this number yet: do something with this contact!
} else {
//don't do anything with this contact because we've already found this number
}
}
} finally {
cursor.close();
}
}
}
es funktioniert perfekt danke für die gemeinsame Nutzung der Lösung –
@ gaurav4sarma Ich bin froh, dass es Ihnen geholfen hat! –
Sicher kein Problem, unterdessen könntest du bitte auch die Frage auffrischen. Dank –
- 1. android Bearbeiten von Kontakten programmatisch
- 2. android Abrufen von Kontakten Name und Nummer mit SimpleCursorAdapter
- 3. Abrufen von Outlook-Kontakten mit Python
- 4. Android Marshmallow Sicherheits Ausnahme beim Erhalten von Kontakten
- 5. Programmgesteuertes Abrufen von Kontakten von Yahoo! Adressbuch
- 6. Android: Verwalten von Kontakten mit Suchschlüssel
- 7. Kontakt von Android-Kontakten löschen
- 8. Xamarin android Lesen von Kontakten und Nummern
- 9. Abrufen von SMS-Informationen basierend auf den Kontaktdaten des Benutzers
- 10. Wie Kontaktdaten von Adressbuchs
- 11. Android - Erstellen von Kontakten in Telefon
- 12. Auszug Unternehmen Kontaktdaten von Google
- 13. Fehler beim Exportieren von Kontakten mit Adressbuch-Framework iOS 9?
- 14. Android Studio hängt beim Abrufen von Dokumentation
- 15. Google Kontakte API PHP curl Abrufen von Kontakten
- 16. Wie funktionieren implizite verknüpfte Spalten mit Android-Kontaktdaten?
- 17. MVC Create Artist mit Kontaktdaten
- 18. Speichern von Website-Kontakten auf iCloud
- 19. Alle Kontaktdaten lesen
- 20. Entfernen Sie Zeit Komplexität beim Laden von Kontakten
- 21. Exportieren von Kontakten
- 22. AutoComplete TextView mit Kontakten
- 23. So synchronisieren Sie Telefonkontakte in Google Mail mithilfe von Google-Kontakten mithilfe von Google-Kontakten api
- 24. Updating Organisationsnamen in android Kontakten programmatisch
- 25. Verknüpfen von Kontakten mit einem Benutzer
- 26. Problem beim Aktualisieren von Google-Kontakten aus JavaScript
- 27. Fehler beim Abrufen von Daten von mysql in Android App
- 28. Verwendung von GenericTypeindicator beim Abrufen von Daten aus Firebase Android
- 29. Verwenden von Android Loader beim Abrufen von Daten aus Firebase
- 30. Wie aggregieren Sie Kontaktdaten, wenn Sie versuchen, neue Kontakte hinzuzufügen?
Versuchen Sie, doppelte Telefonnummern zu vermeiden, oder doppelte Kontaktnamen? Ein einzelner Kontakt könnte mehrere Telefonnummern haben, daher würde für jede dieser Nummern derselbe Anzeigename aufgeführt. –
Ich weiß über das, aber das Problem ist, dass es mir die doppelten Nummern gibt. –
Ok, ich hatte das gleiche Problem, das du dann gemacht hast! Lass es mich wissen, wenn meine Antwort hilft. –