Как получить номер телефона и имя по ContactsContract.Contacts._ID
Нужно получить Имя контакта и его имя из контактной книжки. Выдает ошибку на Cursor i что не правильно делаю Запрос. В манифесте указал
<uses-permission android:name="android.permission.READ_CONTACTS"/>
И вот код соответственно на Java
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
return;
}
if (requestCode == REQUEST_DATE) {
Date date = (Date) data
.getSerializableExtra(DatePickerFragment.EXTRA_DATE);
mCrime.setDate(date);
updateDate();
} else if (requestCode == REQUEST_CONTACT && data != null) {
Uri contactUri = data.getData();
String[] queryFields = new String[] {
ContactsContract.Contacts._ID
};
Cursor c = getActivity().getContentResolver()
.query(contactUri, queryFields, null, null, null);
int suspectIdInt;
try {
if (c.getCount() == 0) {
return;
}
c.moveToFirst();
suspectIdInt = c.getInt(0);
} finally {
c.close();
}
String[] queryNameAndNumber = new String[] {
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
};
String[] suspectIdStr = new String[] {
Integer.toString(suspectIdInt)
};
//Выдает ошибку на query
Cursor i = getActivity().getContentResolver()
.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
queryNameAndNumber,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?",
suspectIdStr,
null
);
try {
if (i.getCount() == 0) {
return;
}
i.moveToFirst();
String suspect = i.getString(0);
int suspectNumber = i.getInt(0);
mCrime.setSuspect(suspect);
mCrime.setNumberSuspect(suspectNumber);
mSuspectButton.setText(suspect);
} finally {
i.close();
}
}
}