Я пытаюсь прочитать и отобразить контакт в TextView.Проблема в том, что я могу запустить действие «Контакты» и выбрать контакт.После этого родительская активность (которая запустила контактную активность) исчезла.Любая идея, почему он не работает?
class MainActivity : AppCompatActivity() {
val REQUEST_CONTACT = 1000
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
takeContact.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) {
launchContactPicker()
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS)) {
} else {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_CONTACTS), REQUEST_CONTACT)
}
}
}
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
when (requestCode) {
REQUEST_CONTACT -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
launchContactPicker()
} else {
Toast.makeText(this, "Permission denied. You can't read contacts!", Toast.LENGTH_LONG).show()
}
return
}
}
}
private fun launchContactPicker() {
Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI).also { intent ->
intent.resolveActivity(packageManager)?.also {
startActivityForResult(intent, REQUEST_CONTACT)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == REQUEST_CONTACT && resultCode == RESULT_OK) {
val uri = data.data as Uri
val projection = arrayOf(ContactsContract.CommonDataKinds.Phone.NUMBER)
val cursor = contentResolver.query(uri, projection, null, null, null)
if (cursor != null && cursor.moveToFirst()) {
val phoneIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
val nameIdx = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME)
val number = cursor.getString(phoneIdx)
val name = cursor.getString(nameIdx)
val contact = "$name\n$number"
selectedContact.text = contact
}
cursor.close()
}
}
}
Я также проверил с отладчиком, onActivityResult
не достигнут.Я тестировал на Android 6.