我的问题似乎很愚蠢,但下面的代码让我很头疼。下面的代码打印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
第三个参数:
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));
请为我解释这一点。
谢谢 :)