мой вопрос кажется глупым, но это вызывает у меня головную боль из-за кода ниже. Ниже код напечатайте 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
о третьем параметре:
выделение: фильтр, декларирующий, какие строки возвращать, отформатированный как
Предложение SQL WHERE (исключая само WHERE). Проходя ноль воли
вернуть все строки для данного URI.
Таким образом, как это определение, CONTACT_ID
действует как «ряд». (потому что это filter which row to return
)
но как эта строка, CONTACT_ID
действует как "КОЛОННА":
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
Пожалуйста, объясните мне этот момент.
спасибо:)