Abdroid 電話帳に、以下のようなデータが登録されている場合、
FAMILY_NAME = null (未入力状態)
GIVEN_NAME = null
MIDDLE_NAME = null
PHONETIC_FAMILY_NAME = null
PHONETIC_GIVEN_NAME = ウラン
PHONETIC_MIDDLE_NAME = null
ADDRESS = 12345@aaaaa.com
Uri を CommonDataKinds.Email.CONTENT_URI
String[] projection に、
android.provider.ContactsContract.Contacts.DISPLAY_NAME
android.provider.ContactsContract.RawContacts.PHONETIC_NAME
で、ContentResolver の query を実行すると、
DISPLAY_NAME = 12345@aaaaa.com
PHONETIC_NAME = null
の結果で取得してしまう。
DISPLAY_NAMEが空だから、代わりにADDRESSが返ってくるのは
しかたないけど、
PHONETIC_GIVEN_NAME を入れてるのに、
PHONETIC_NAME に、null が返ってしまう。
FAMILY_NAME、GIVEN_NAME が入力されてれば、PHONETIC_NAME は想定どおり
PHONETIC_FAMILY_NAME + PHONETIC_MIDDLE_NAME + PHONETIC_GIVEN_NAME
の結合で、取得できるのに。。。
やはり、PHONETIC_NAME と ADDRESS 両方が欲しい場合は、
ContactsContract.Data.CONTENT_URI で、CONTACT_ID と PHONETIC_NAME を取得してから、
CONTACT_ID をWHERE句で指定する Email.CONTENT_URI で、
問い合わせないといけない。