電話番号は独自のテーブルに保存されており、個別に照会する必要があります。電話番号テーブルをクエリするには、SDK変数ContactsContract.CommonDataKinds.Phone.CONTENT_URIに格納されているURIを使用します。WHERE条件を使用して、指定した連絡先の電話番号を取得します。
if (Integer.parseInt(cur.getString(
cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
Cursor pCur = cr.query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
new String[]{id}, null);
while (pCur.moveToNext()) {
// Do something with phones
}
pCur.close();
}
Androidの連絡先SQLiteデータベースに対して2番目のクエリを実行します。電話番号は、ContactsContract.CommonDataKinds.Phone.CONTENT_URIに格納されているURIに対して照会されます。連絡先IDはContactsContract.CommonDataKinds.Phone.CONTACT_IDとして電話テーブルに保存され、WHERE句は返されるデータを制限するために使用されます。
メールアドレス
電子メールアドレスのクエリは、電話番号に似ています。データベースから電子メールアドレスを取得するには、クエリを実行する必要があります。メールアドレステーブルをクエリするには、ContactsContract.CommonDataKinds.Email.CONTENT_URIに保存されているURIをクエリします。
Cursor emailCur = cr.query(
ContactsContract.CommonDataKinds.Email.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = ?",
new String[]{id}, null);
while (emailCur.moveToNext()) {
// This would allow you get several email addresses
// if the email addresses were stored in an array
String email = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
String emailType = emailCur.getString(
emailCur.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));
}
emailCur.close();