//声明全局变量
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<out String>, 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()
}
}
}
网友评论