Код https://developer.android.com/guide/com ... ickContact
Код: Выделить всё
fun selectContact() {
// Start an activity for the user to pick a phone number from contacts.
val intent = Intent(Intent.ACTION_PICK).apply {
type = CommonDataKinds.Phone.CONTENT_TYPE
}
if (intent.resolveActivity(packageManager) != null) {
startActivityForResult(intent, REQUEST_SELECT_PHONE_NUMBER)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == REQUEST_SELECT_PHONE_NUMBER && resultCode == Activity.RESULT_OK) {
// Get the URI and query the content provider for the phone number.
val contactUri: Uri = data.data
val projection: Array = arrayOf(CommonDataKinds.Phone.NUMBER)
contentResolver.query(contactUri, projection, null, null, null).use { cursor ->
// If the cursor returned is valid, get the phone number.
if (cursor.moveToFirst()) {
val numberIndex = cursor.getColumnIndex(CommonDataKinds.Phone.NUMBER)
val number = cursor.getString(numberIndex)
// Do something with the phone number.
...
}
}
}
}
- На Android 10,11 нет работать без ручной установки разрешения READ_CONTACTS (contentResolver.query не возвращает данные, 0 записей). Если вы дадите разрешение READ_CONTACTS во время выполнения, оно работает.
- Я посмотрел на Android 7,12,14, выбор контакта из контактов работает без разрешений во время выполнения (Samsung S22 и стандартный эмулятор Android Studio).
Пытался сделать все по мануалу из документации Google https://developer.android.com/guide/com ... mmon?hl=en #PickContact
UP
Сейчас проверил на двух эмуляторах Android 10. На одном работает, а на другом нет.
На эмуляторах вообще не работает с Android 11.
Это может быть связано с эмуляторами...
Также это не работает на Samsung a40.
Подробнее здесь: https://stackoverflow.com/questions/792 ... m-contacts
Мобильная версия