在android中请求权限,一般使用requestPermissions和onRequestPermissionsResult组合使用来完成。
但是这种方式有个很大的弊端,会让代码分割导致代码可读性变差。经测试改方式ktx调用registerForActivityResult只能在activity或者fragment,初始化时调用,不能用在点击的时候触发使用
添加依赖
implementation "androidx.activity:activity-ktx:1.2.3"
implementation "androidx.fragment:fragment-ktx:1.3.3"
直接上代码
suspend fun ActivityResultCaller.permission(permission: String): Boolean {
return callbackFlow {
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
isGranted