亲宝软件园·资讯

展开

Android权限机制深入分析讲解

Hdnw 人气:0

1、权限

到Android 10 系统为止所以的危险权限

2、在程序运行时申请权限

危险权限申请步骤

(1)判断用户是否给我们授权了。

checkSelfPermission()方法,第一个参数是Context,第二个参数是具体的权限名,然后我们使用方法的返回值和PackageManager.PERMISSION_GRANTED作比较。相等就说明用户已经授权,我们直接执行拨打电话的操作进行。不等就说明用户没有授权,则需要调用ActivityCompat.requestPermissions()方法向用户申请权限。requestPermissions()方法有三个参数,第一个参数要求是Activity的实例,第二个参数是一个String数组,把要申请的权限名放入数组中,第三个参数是唯一的请求码。

if(ContextCompat.checkSelfPermission(this,android.Manifest.permission.CALL_PHONE)!=PackageManager.PERMISSION_GRANTED){
                ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.CALL_PHONE),1)
 }
 else{
          call()
 }

(2)用户已经授权,我们直接执行拨打电话的操作。

private fun call(){
        try {
            val intent=Intent(Intent.ACTION_CALL)
            intent.data= Uri.parse("tel:10086")
            startActivity(intent)
        }catch (e:SecurityException){
            e.printStackTrace()
        }
    }

(3)用户没有授权,调用ActivityCompat.requestPermissions()方法之后,系统会弹出一个权限申请的对话框,用户可以选择接受或者拒绝申请,最后回调到onRequestPermissionsResult()方法·。

override fun onRequestPermissionsResult(
        requestCode: Int,
        permissions: Array<out String>,
        grantResults: IntArray
    ) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)
        when(requestCode){
            1->{
                if (grantResults.isNotEmpty()&&grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    call()
                }
                else{
                    Toast.makeText(this,"You denied the permission",Toast.LENGTH_SHORT).show()
                }
            }
        }
    }

加载全部内容

相关教程
猜你喜欢
用户评论