Каждое множество примеров (веб-сайт, учебник, электронная книга ...), когда нам нужно увидеть номер телефона одного контактного ID, нам нужно запросить, как показано ниже:
Cursor contactCursor = getContentResolver().query(uri, null, null, null, null);
if (contactCursor.moveToFirst()){
id = contactCursor.getString(contactCursor.getColumnIndex(ContactsContract.Contacts._ID));
}
contactCursor.close();
//CHOOSE MOBILE PHONE OF CONTACT_ID
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER},
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + id + " AND " + ContactsContract.CommonDataKinds.Phone.TYPE+ "=" +ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE ,
null, null);
Но, если язапросите прямо на one contact uri
и отфильтруйте столбец _ID = contactID.Я увижу ошибку при запросе.Вот мой код:
String[] projector = new String[]{ContactsContract.CommonDataKinds.Phone.NUMBER};
String selection = ContactsContract.CommonDataKinds.Phone.TYPE + "=" + ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE;
Cursor phoneContact = getContentResolver().query(uri, projector, selection, null, null);
Примечания: объект uri в приведенном выше коде возвращается, когда кто-то выбирает один контакт из списка контактов.
@ Редактировать: здесь моя ошибка, которую я получаю: Здесь моя ошибка:
java.lang.RuntimeException: ошибка доставки результата ResultInfo {who = null, request = 0, result = -1, data = Intent {dat = content: //com.android.contacts/contacts/lookup / 0r2-354F574135474F2741334D352743 / 2 flg = 0x1}} для действия {com.basic / com.data.SMSContactApp}: java.lang.IllegalArgumentException: неверные данные столбца1
Спасибо:) * 1016