2017-10-11 48 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) 
} 

谢谢!

相关问题