class MainActivity : AppCompatActivity() {// 请求权限的标识private val REQUEST_PERMISSIONS_CODE = 100// 需请求的权限private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.INTERNET,Manifest.permission.WRITE_EXTERNAL_STORAGE)// 检查权限private fun allPermissionsGranted(): Boolean {// 检查权限是否已授权val internetGranted = ContextCompat.checkSelfPermission(baseContext, Manifest.permission.INTERNET) == PackageManager.PERMISSION_GRANTED// 仅在特定版本检查授权,否则按已授权处理val storageGranted = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.P) {ContextCompat.checkSelfPermission(baseContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED} else {true}return internetGranted && storageGranted}// 授权结果处理override fun onRequestPermissionsResult(requestCode: Int,permissions: Array<out String>,grantResults: IntArray) {super.onRequestPermissionsResult(requestCode, permissions, grantResults)// 仅处理有对应权限标识的逻辑if (requestCode == REQUEST_PERMISSIONS_CODE) {// 再次检查是否所有权限已授权if (allPermissionsGranted()) {doSomething()} else {Toast.makeText(this, "权限被拒绝,应用无法正常工作", Toast.LENGTH_LONG).show()finish()}}}public override fun onStart() {super.onStart()// 检查是否所有权限已授权if (allPermissionsGranted()) {doSomething()} else {// 存在未授权的权限时请求获取权限ActivityCompat.requestPermissions(this, REQUIRED_PERMISSIONS, REQUEST_PERMISSIONS_CODE)}}
}
Android Kotlin请求权限及权限回调处理
本文来自博客园,作者:maplepie,转载请注明原文链接:https://www.cnblogs.com/maplepie/p/19085131