11

現在、ドラフトを保存できるアプリケーションを作成しています(Androidバージョン> = 2.0を使用)。各ドラフトは、 を介して連絡先に接続されContactsContract.Contacts.LOOKUP_KEYます。私の問題は、連絡先の名前を変更すると、検索キーも変更されることです。それはこれが機能する方法ですか?

では、何のために検索キーが必要なのでしょうか? 検索キーは決して変わらないと思っていましたが、とにかく変更されました。その行動に戸惑う…

連絡先に永続的にリンクする方法を誰か説明してもらえますか? ルックアップ キーの代わりに ID を使用する必要がありますか?

前もって感謝します。

4

2 に答える 2

16

検索キーが構造化/階層キーであることは理解しています。したがって、厳密に言えば、変更される可能性がありますが、適切な方法を使用して連絡先を見つけるために使用されます。

    Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
    Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
于 2010-09-29T12:52:23.787 に答える
4

編集:

生の連絡先IDを使用して連絡先IDまたはルックアップキーを見つけてみませんか?これは2.1のバグです。

ルックアップキーは、同期されていない連絡先の連絡先名に基づいていました。

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

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

まだ試していません。しかし、私はこれについていくつかの情報を見つけました。

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

...。

アプリケーションでパフォーマンスが懸念される場合は、次に示すように、連絡先のルックアップとロングIDの両方を保存し、両方のIDからルックアップURIを構築することをお勧めします。

Uri lookupUri = getLookupUri(contactId, lookupKey)

両方のIDがURIに存在する場合、システムは最初に長いIDを使用しようとします。これは非常に簡単なクエリです。連絡先が見つからない場合、または見つかった連絡先のルックアップキーが間違っている場合、コンテンツプロバイダーはルックアップキーを解析し、構成する生の連絡先を追跡します。アプリが連絡先を一括処理する場合は、両方のIDを維持する必要があります。アプリがユーザーアクションごとに1つの連絡先で動作する場合は、長いIDを保存する必要はありません。

于 2011-04-27T09:29:25.257 に答える