私の質問はばかげているようですが、以下のコードで頭が痛くなります。以下のコードを印刷contactId
しtelephone number
て画面に表示します。
それはうまく機能しますが、もっと明確に知る必要があること:
ContentResolver solver = getContentResolver();
String mess="";
Cursor cursor = solver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()){
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
mess = mess + "ID: "+contactId+"\n";
Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
while (phones.moveToNext()) {
String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
mess = mess + phoneNumber + "\n";
}
}
私が知らないのは、上記のコードの次の行です。
Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
Android Development
3番目のパラメーターについてのように:
selection : SQL WHERE 句としてフォーマットされた、返される行を宣言するフィルター (WHERE 自体を除く)。null を渡すと、指定された URI のすべての行が返されます。
したがって、この定義としてCONTACT_ID
は、「A ROW」として機能します。(だからfilter which row to return
)、
ただし、この行CONTACT_ID
として、「A COLUMN」として機能します。
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
この点について説明してください。
ありがとう :)