diff --git a/app/build.gradle.kts b/app/build.gradle.kts index ad2745d..3108939 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -22,8 +22,8 @@ android { applicationId = "dev.n1ko.nikogpt" minSdk = 29 // Android 10 targetSdk = 35 - versionCode = 5 - versionName = "1.1.0" + versionCode = 6 + versionName = "1.2.0" } signingConfigs { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aa9896e..9b85ef2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + = + registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted -> + val request = pendingWebPermission + pendingWebPermission = null + if (request == null) return@registerForActivityResult + if (granted) request.grant(request.resources) else request.deny() + } + // Camera capture for the attach button. private val takePicture: ActivityResultLauncher = registerForActivityResult(ActivityResultContracts.TakePicture()) { ok -> @@ -195,6 +209,22 @@ class MainActivity : AppCompatActivity() { } webView.webChromeClient = object : WebChromeClient() { + override fun onPermissionRequest(request: PermissionRequest) { + if (request.resources.none { it == PermissionRequest.RESOURCE_AUDIO_CAPTURE }) { + request.deny() + return + } + if (ContextCompat.checkSelfPermission( + this@MainActivity, Manifest.permission.RECORD_AUDIO, + ) == PackageManager.PERMISSION_GRANTED + ) { + request.grant(request.resources) + return + } + pendingWebPermission = request + audioPermission.launch(Manifest.permission.RECORD_AUDIO) + } + override fun onProgressChanged(view: WebView, newProgress: Int) { progress.visibility = if (newProgress in 1..99) View.VISIBLE else View.GONE progress.progress = newProgress