2010-09-20 9 views
10

Ich schreibe gerade eine Anwendung, die Entwürfe speichern (mit Android-Version> = 2.0) ermöglicht. Jeder Entwurf ist über die ContactsContract.Contacts.LOOKUP_KEY mit einem Kontakt verbunden. Mein Problem ist, dass, wenn ich den Namen meines Kontaktes ändere, der Nachschlageschlüssel auch ändert. Funktioniert das so?Android: Verwalten von Kontakten mit Suchschlüssel

Also für was brauche ich einen Nachschlageschlüssel? Ich dachte, dass der Nachschlageschlüssel sich nie ändert und jetzt ändert er sich sowieso. Ich bin verwirrt über dieses Verhalten ...

Kann mir jemand erklären, wie man dauerhaft mit einem Kontakt verbindet? Sollte ich IDs anstelle des Suchschlüssels verwenden?

Vielen Dank im Voraus.

Antwort

15

Ich verstehe, dass der Suchschlüssel ein strukturierter/hierarchischer Schlüssel ist. Daher streng genommen kann es ändern, aber immer noch verwendet werden, um Ihren Kontakt zurück zu finden, indem Sie die entsprechende Methode:

Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey); 
    Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri); 
+0

Ja, das scheint zu funktionieren. Irgendwie habe ich die Methode 'ContactsContract.Contacts.lookupContact()' nicht beachtet. Danke für deine Antwort. – dotcs

+0

Was ist der vollständige Code dafür? Ich kann es nicht zur Arbeit bringen. – user123321

+1

Ich arbeite mit Android 2.2. Ich griff auf einen Nachschlageschlüssel für Kontakt war es 0r12-2982324852 später änderte ich den Namen und speicherte den Kontakt und Lookupkey war 0r12-2982324852365430403C4638. So ist es auch für Android 2.2 gleich, aber als ich eine Telefonnummer dem selben Kontakt hinzufügte, blieb der Nachschlageschlüssel gleich 0r12-2982324852365430403C4638. Also können wir schließen, was @BoD gesagt hat, ist richtig. –

4

Edited:

Warum nicht Kontakt-ID oder Lookup-Schlüssel über Verwendung von rohen finden Kontakt-ID? Das ist ein Fehler in 2.1.

Der Suchschlüssel basierte auf dem Kontaktnamen für nicht synchronisierte Kontakte.

http://comments.gmane.org/gmane.comp.handhelds.android.devel/130677

========================================= =======================

Ich habe es noch nicht versucht. Aber ich habe Informationen darüber gefunden.

http://developer.android.com/resources/articles/contacts.html

....

Wenn die Leistung ein Problem für Ihre Anwendung ist, könnte man sowohl die Suche und die lange ID eines Kontakts gespeichert werden soll und eine Lookup-URI konstruieren aus beiden IDs , wie hier gezeigt:

Wenn beide IDs im URI vorhanden sind, versucht das System zuerst die lange ID zu verwenden. Das ist eine sehr schnelle Abfrage. Wenn der Kontakt nicht gefunden wird oder wenn der gefundene Kontakt den falschen Nachschlageschlüssel hat, parst der Inhaltsanbieter den Nachschlageschlüssel und sucht nach den Rohkontakten. Wenn Ihre App Kontakte in großen Mengen verarbeitet, sollten Sie beide IDs beibehalten. Wenn Ihre App mit einem einzelnen Kontakt pro Benutzeraktion arbeitet, müssen Sie wahrscheinlich nicht die lange ID speichern.

Verwandte Themen