2017-10-11 122 views
-2

如何使用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) 
} 

我添加的用戶權限清單 但仍具有相同 error

+1

也許這有助於:https://developer.android.com/training/permissions/requesting.html?hl=zh-CN 419 –

+2

[android請求運行時權限調用操作](https:// stackoverflow。 com/questions/42057040/android-request-runtime-permission-to-call-action) – jrtapsell

+0

爲什麼只有標籤kotlin?最後添加android。而你的問題是重複[請求權限](https://stackoverflow.com/questions/42057040/android-request-runtime-permission-to-call-action) – kurt

回答

0

您需要請求運行時權限,因爲Android 6.0的某些權限要求您在安裝時以及在運行時再次提出要求。

按照說明here說明如何在運行時詢問權限。

1

您需要的權限添加到您的清單第一

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

許可清單中添加後下面的代碼將正常工作爲你「Number_to_call」將YOUE數字,是需要被替換

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

您需要添加運行時權限。 Download the source code from here

//點擊佈局的功能:

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) 
} 

謝謝!

相關問題