Я попытался вызвать телефонный разговор на Kotlin, например:
imgPhone.setOnClick {
val intent = Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "1122334455"))
startActivity(intent)
}
При нажатии на изображение телефона ничего визуально не происходит.Оказывается, отладчик показал вам это:
java.lang.SecurityException: Отказ в разрешении: запуск Intent {act = android.intent.action.CALL dat = tel: xxxxxxxxxx cmp = com.android.server.telecom / .components.UserCallActivity}
Я пробовал несколько решений:
- Поместите эту строку в AndroidManifest.xml:
<использует-разрешение android: name = "android.permission.CALL_PHONE" />
Добавить android: exported = "true" в операции, для которой вызывается намерение вызова:
< activity android:name=".activities.ProfileActivity" android:exported="true"/>
Спросите разрешение явно:
override fun onCreate() {
super.onCreate()
/*
more codes here
*/
setupPermissions()
}
fun setupPermissions() {
val permission = ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)
if (permission != PackageManager.PERMISSION_GRANTED) {
Log.i("Error", "Permission to call denied")
}
}
Пока что ни один из этих обходных путей не работает (на Android 6).То же исключение SecurityException по-прежнему происходит.Каково правильное решение, тогда?