Page 1 of 1

Android: Die Berechtigungsanforderung wird in einer unendlichen Schleife ausgeführt

Posted: 04 Mar 2025, 02:55
by Anonymous
Nach der Installation der App, die ich zu Zugriff auf das Mikrofon anfordern (mir sind die Empfehlungen bekannt, ist dies eine schnelle und schädliche Version.) Hier ist der relevante Code: < /p>

Code: Select all

override fun onResume() {
super.onResume()
checkPermissions()
// once the user selects an option in the permissions activity, this onResume fires again
}

private fun checkPermissions() {
if (ContextCompat.checkSelfPermission(
this, Manifest.permission.RECORD_AUDIO
)
== PackageManager.PERMISSION_GRANTED
) {
// we're good, proceed
checkSignIn()
} else {
if (ActivityCompat.shouldShowRequestPermissionRationale(
this, Manifest.permission.RECORD_AUDIO
)
) {
// branch A
explainRecordingRequest()
} else {
// branch B
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(Manifest.permission.RECORD_AUDIO), 1000
)
}
}
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
Timber.d("FLOW: received req=$requestCode, len(grants)=${grantResults.size}")
when (requestCode) {
1000 -> {
if (grantResults.isNotEmpty() &&
grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Timber.d("FLOW: ...granted")
} else {
Timber.d("FLOW: ...not granted")
}
}
else -> {
Timber.e("FLOW: unhandled permission request for $requestCode")
}
}
}

private fun explainRecordingRequest() {
val builder: AlertDialog.Builder = AlertDialog.Builder(this)
builder
.setTitle("Why we're requesting this")
.setMessage(getString(R.string.record_audio_permission_explanation))
.setPositiveButton("Got it!") { it, _ ->
it.dismiss()
ActivityCompat.requestPermissions(
this@MainActivity, arrayOf(Manifest.permission.RECORD_AUDIO), 1000
)
}
val dialog: AlertDialog = builder.create()
dialog.show()
}
Die MIC -Erlaubnis Reque sieht folgendermaßen aus:

Die "Roy Path" - Benutzer autorisiert " - Benutzerfine; Der semi-rosy-Pfad-der Benutzer lehnt zunächst ab, liest die Erklärung und autorisiert-funktioniert auch gut. Nach dem, was ich sagen kann: < /p>

OnResume -Brände < /li>
CheckPermissions fordert Zugriff auf (Zweig B im obigen Code) < /li>
Onrequest ... erhält -1 (nicht gewährt) < /li>
< /ul> < /ul> < /ul> < /ul> < /ul> < /> < />
Vielen Dank