Files
EhViewer/app/src/main/java/com/hippo/util/PermissionUtils.kt
T

31 lines
1.1 KiB
Kotlin

package com.hippo.util
import android.content.Context
import android.content.pm.PackageManager
import androidx.activity.ComponentActivity
import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlin.coroutines.resume
private lateinit var requestPermissionLauncher: ActivityResultLauncher<String>
private lateinit var callback: (Boolean) -> Unit
fun ComponentActivity.initPermission() {
requestPermissionLauncher = registerForActivityResult(ActivityResultContracts.RequestPermission(), ::permissionCallback)
}
private fun permissionCallback(v: Boolean) {
callback(v)
}
suspend fun Context.requestPermission(key: String): Boolean {
if (ContextCompat.checkSelfPermission(this, key) == PackageManager.PERMISSION_GRANTED) return true
return suspendCancellableCoroutine { cont ->
callback = {
cont.resume(it)
}
requestPermissionLauncher.launch(key)
}
}