Android 6.0权限 Kotlin代码

    //声明全局变量
    val REQUEST_CODE_PERMISSION = 0x01

    /**
     * 请求Storage权限
     */
    private fun requestStoragePermissions() {

        val permissions = arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE)

//        检查读写权限
        val permissionCheck = ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

        if (permissionCheck == PackageManager.PERMISSION_GRANTED)//已经具备该权限
        {

           //TODO 写自己的代码
        } else if (permissionCheck == PackageManager.PERMISSION_DENIED) {//不具备该权限,需要向用户申请该权限

            if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_EXTERNAL_STORAGE))//当用户此前曾拒绝过该权限,则需要给出请求该权限的说明。当用户没有勾选下次不提示,则返回true,不然返回false
            {
                ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_PERMISSION)
            } else {//如果用户此前没有拒绝过,首次调用时,则无需提示,直接请求权限。当用户此前拒绝过并且勾选下次不提示,也会返回false。

                ActivityCompat.requestPermissions(this, permissions, REQUEST_CODE_PERMISSION)
            }
        }
    }


    /**
     * 权限请求返回结果处理
     */
    override fun onRequestPermissionsResult(requestCode: Int, permissions: Array, grantResults: IntArray) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

        if (requestCode == REQUEST_CODE_PERMISSION) {

            if (grantResults[0] == PackageManager.PERMISSION_GRANTED)//第0个权限请求成功
            {
                Toast.makeText(this, "权限请求成功", Toast.LENGTH_SHORT).show()
                //TODO 写自己的代码
            } else {//权限被手动拒绝
                Toast.makeText(this, "权限请求失败,应用需要储存卡写入权限,请在设置界面打开", Toast.LENGTH_SHORT).show()
            }
        }
    }

你可能感兴趣的:(Android 6.0权限 Kotlin代码)