У меня есть приложение, которое позволяет пользователю вводить номер телефона или выбирать его из своих контактов. Для этого я использую:Знакомство с Android-контактами только от местных контактов
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
//intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT); //PICK_CONTACT is defined earlier as 1
Это прекрасно работает, но включает в себя контакты из различных приложений, таких как электронные письма Facebook и т. Д. Если я раскомментировать
//intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
Это показывает только те контакты, которые вы видите в приложении Контакты, но не возвращает номера телефонов. Любой способ исправить это?
У меня есть разрешение READ_CONTACTS.
код для чтения Uri контакта
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data)
{
super.onActivityResult(reqCode, resultCode, data);
if(reqCode != PICK_CONTACT) return;
Cursor cur = getContentResolver().query(data.getData(), null,
null, null, null);
if (cur.getCount() <= 0) return;
while (cur.moveToNext())
{
String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0)
{
// Query phone here. Covered next
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id,null, null);
while (phones.moveToNext())
//phone is the EditText view where the user enters a phone number
phone.setText(phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)));
phones.close();
}
}
}
Забыл упомянуть, что у меня есть разрешение READ_CONTACTS. Он по-прежнему возвращает номера телефонов контактов, должен ли я раскомментировать строку кода. – ADiabeticBadger
@ADiabeticBadger: В вашем вопросе ваша проблема заключается в том, что 'ACTION_PICK' не возвращает номер телефона. В вашем комментарии ваша проблема в том, что он * * возвращает номер телефона. Что он? – CommonsWare
Извините, у вас проблемы с вводом текста. Я имел в виду, что когда я раскомментирую строку кода, он показывает только контакты, которые вы увидите в приложении контактов, но он не вернет номер телефона даже с разрешением READ_CONTACTS. – ADiabeticBadger