私はアンドロイドの連絡先アプリを作成していますので、私は定期的にユーザーの連絡先を読み、アプリに保存しています。これを行うために、私は私のアプリでは、私は私が更新するべき接触知っているので、ID
のいくつかの種類に依存している(または追加/削除)する必要があるとContacts Providerは、それらのいくつか提供:Androidの連絡先を読むときにSOURCE_IDに依存する必要がありますか?
CONTACT_ID
が集約接触IDです、- 各集計接触が持つそれぞれが、一つ以上の生のコンタクトから構成され、独自の
RAW_CONTACT_ID
、 - 、最も重要なのは、各生の連絡先は、この接触が持つIDすなわちサーバIDであると考えられる
SOURCE_ID
を、持っていますこのアカウントのサーバーで
SOURCE_ID
に頼ることにしましたが、これは最も安定した音であると考えられています。例えば。ユーザーがデバイス内の同じアカウントを削除して再追加すると、このアカウントの連絡先が異なるIDを取得しないようにすることができます。これは、アプリで一致させることができないためです。
ですが、Gmailの同期アダプターでは、下記のような約束を守っているようです。 Exchange同期アダプタは残念ながらSOURCE_ID
が変更されていません。サーバ番号は23:4
のように小さいため、間違いなくサーバIDはありません。
質問:この問題を解決する方法はありますか?私は右のID
を使用していますか? Exchangeアダプターは他のフィールドに「永続サーバーID」を保管していますか?
ドキュメント:SOURCE_ID
must be unique for each account type and should be stable across syncs:
- ユニーク:アカウントの各生の接触は、独自のソースIDを持っている必要があります。これを強制しないと、連絡先 アプリケーションで問題が発生します。同じアカウントタイプ の2つの未加工の連絡先が同じ発信元IDを持つ可能性があることに注意してください。たとえば、アカウント[email protected]の生の連絡先「Thomas Higginson」は、 アカウント[email protected]の生の連絡先「Thomas Higginson」と同じソースIDを持つことが許可されています( )。
- 安定:ソースIDは、生の連絡先のオンラインサービスのデータの永続的な部分です。たとえば、ユーザーが連絡先ストレージ をApps設定から消去して再同期した場合、復元された生の連絡先には以前と同じソースIDが である必要があります。これを強制しないと、 ショートカットが機能しなくなります。
私が 'ID'に頼ると、時間の経過と共に変化すると思うはずです。それでは、これらのIDではない場合、どのようなリファレンスを使用すればより永続的になりますか? –
あなたの質問は他の答えで答えられました。あなたが使用する必要があるキーは 'Contacts.LOOKUP_KEY'です。一般に、検索キーは多くのコンポーネントから生成される複合キーです。私はちょうど私の答えを編集しました – Dibzmania