Skip to content

Commit

Permalink
Update project
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelbel committed Dec 12, 2024
1 parent 5105f9d commit 0aa948f
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions core/src/main/kotlin/org/michaelbel/core/ktx/IntentKtx.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,11 @@

package org.michaelbel.core.ktx

import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.provider.Settings
import android.speech.RecognizerIntent
Expand All @@ -12,6 +15,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import androidx.core.content.ContextCompat
import androidx.core.net.toUri

fun Context.navigateToAppSetting() {
Expand Down Expand Up @@ -96,4 +100,31 @@ fun rememberSpeechRecognitionLauncher(onInputText: (String) -> Unit): () -> Unit
}
speechRecognizeContract.launch(intent)
}
}

@Composable
fun rememberRequestCameraPermission(
onGranted: () -> Unit
): () -> Unit {
val context = LocalContext.current
val navigateToAppSettings = rememberNavigateToAppSettings()
val cameraPermissionContract = rememberLauncherForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
val shouldRequest = (context as Activity).shouldShowRequestPermissionRationale(Manifest.permission.CAMERA)
when {
granted -> onGranted()
!granted && !shouldRequest -> navigateToAppSettings()
}
}
return remember {
{
when {
ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED -> {
cameraPermissionContract.launch(Manifest.permission.CAMERA)
}
else -> onGranted()
}
}
}
}

0 comments on commit 0aa948f

Please sign in to comment.