前面介绍了 Android 运行时权限。
其中,申请权限的步骤有些繁琐,需要用到:ActivityCompat.requestPermissions
函数和 onRequestPermissionsResult
回调函数,今天就借助 ActivityResultLauncher
来简化书写。
步骤1:创建 ActivityResultLauncher
首先,你必须在 onCreate
函数的前面创建 ActivityResultLauncher
对象。
通过 registerForActivityResult
函数可以创建 ActivityResultLauncher
对象。
/**
* 申请权限
*/
private val requestPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) {
if (it) {
Log.d(TAG, "申请成功")
} else {
Log.d(TAG, "申请失败")
}
}
第一个参数指定申请权限的启动器RequestPermission
。
第二个参数是回调函数,通过回调函数获取结果。例如,申请权限的回调函数只有一个 Boolean
类型的参数,表示权限申请是否成功。之后,你可以在回调函数里处理相关逻辑。
步骤2:启动 ActivityResultLauncher
通过 ActivityResultLauncher
对象的 launch
方法可以启动申请权限的启动器。
requestPermission.launch(Manifest.permission.READ_EXTERNAL_STORAGE)
launch
函数接收一个参数,这个参数表示你要申请哪个权限。例如READ_EXTERNAL_STORAGE
。
综合案例
AndroidManifest.xml
:
<?xml version="1.0" encoding="utf-8"?>
<manifest