私は Android の連絡先情報を処理するクラスを作成しています。苦労の末、ユーザーの連絡先に関するすべての情報 (すべての電話番号、電子メール アドレス、住所など) を取得する関数を作成しました。この情報が電話にどのように保存されているのか理解できないので、誰かが私にこれについての洞察を与えてくれることを願っています.
したがって、ユーザーは複数の電話番号、複数の電子メール アドレスなどを持つContactsContract.Contacts.CONTENT_URI
ことができますContactsContract.CommonDataKinds.Phone.CONTENT_URI
。しかしContactsContract.RawContacts.CONTENT_URI
、連絡先のすべてのデータが含まれているはずの もあります。私の仮定では、Contacts テーブルでは連絡先 ID が個別の行の一意の識別子であるのに対し、Phone テーブルでは電話番号が一意の行識別子です。RawContacts に ContactsContract クラスのすべての列が含まれている場合、各連絡先には複数の電話番号、複数の電子メール アドレスなどが割り当てられる可能性があるため、各行に一意の識別子はありません。つまり、そのようなテーブルがどのように作成されるのかわかりません構造化されています。
私の質問は次のとおりです。連絡先情報を含むさまざまなテーブル (連絡先、電話番号、電子メール、StructuredPostal など) は完全に分離されていますか、それともより大きな RawContacts テーブルから抽出された各テーブルの情報ですか? または、RawContacts とは何かを誤解していますか? 私が書いているクラスは、連絡先を電話連絡先リストから別のデータベースに移動するのに役立つため、この情報を知ることで、情報を複数のデータベースに保存する必要があるか、1 つだけに保存する必要があるかを理解するのに役立ちます (上記の RawContacts データベースについて説明した方法と同様)。 .