Skip to content

Instantly share code, notes, and snippets.

@PaulWoitaschek
Created September 14, 2019 07:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save PaulWoitaschek/324ce3a3955dc3092ba5d85fc30c9e21 to your computer and use it in GitHub Desktop.
Save PaulWoitaschek/324ce3a3955dc3092ba5d85fc30c9e21 to your computer and use it in GitHub Desktop.
private val requestPermissionsContinuations = SparseArrayCompat<CancellableContinuation<Unit>>()
suspend fun requestPermissions(requestCode: Int, request: (Activity) -> Unit) {
suspendCancellableCoroutine<Unit> { cont ->
requestPermissionsContinuations.get(requestCode)?.cancel()
requestPermissionsContinuations.put(requestCode, cont)
request(activity)
}
}
fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<String>,
grantResults: IntArray
) {
requestPermissionsContinuations.get(requestCode)?.resume(Unit)
}
@CallSuper
open fun onDestroy() {
requestPermissionsContinuations.forEach { _, cont ->
cont.cancel()
}
requestPermissionsContinuations.clear()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment