Каков правильный способ получения разрешений для намерений телефонных звонков

Как запросить разрешения с помощью Kotlin.

Я пытаюсь сделать функцию телефонного звонка

fun buChargeEvent(view: View){ var number: Int = txtCharge.text.toString().toInt() val intentChrage = Intent(Intent.ACTION_CALL) intent.data = Uri.parse("tel:$number") startActivity(intentChrage) } 

Я добавил пользовательские разрешения в манифест, но все еще имею ту же ошибку .

Вам нужно запросить разрешение во время выполнения, поскольку определенные разрешения для Android 6.0 требуют, чтобы вы спросили при установке и снова во время выполнения.

В соответствии с инструкциями здесь объясняется, как запрашивать разрешение во время выполнения.

Вы должны сначала добавить разрешение на ваш манифест

 <uses-permission android:name="android.permission.CALL_PHONE" /> 

После того как разрешение добавлено в манифест, следующий код будет работать для вас «Number_to_call» будет вашим номером, который нужно заменить

  val call = Intent(Intent.ACTION_DIAL) call.setData(Uri.parse("tel:" +"Number_to_call")) startActivity(call) 

Вам нужно добавить разрешение времени выполнения. Загрузите исходный код отсюда

// Нажмите функцию макета:

  rl_call.setOnClickListener { if (boolean_call) { phonecall() }else { fn_permission(Manifest.permission.CALL_PHONE,CALLMODE) } } 

// Запрос разрешения ответа

 fun fn_permission(permission:String,mode:Int){ requestPermissions(permission, object : PermissionCallBack { override fun permissionGranted() { super.permissionGranted() Log.v("Call permissions", "Granted") boolean_call=true phonecall() } override fun permissionDenied() { super.permissionDenied() Log.v("Call permissions", "Denied") boolean_call=false } }) } 

// функция вызова намерения

  fun phonecall() { val intent = Intent(Intent.ACTION_CALL); intent.data = Uri.parse("tel:1234567890s") startActivity(intent) } 

Благодаря!