mirror of
https://github.com/home-assistant/android
synced 2024-10-15 12:32:54 +00:00
Properly handle multiple permissions requests (#3411)
* Properly handle multiple permissions requests * Removed empty newline at the beginning of the block
This commit is contained in:
parent
52c2f3a8c5
commit
e63d8b33f3
|
@ -140,9 +140,11 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
}
|
||||
|
||||
private val ioScope: CoroutineScope = CoroutineScope(Dispatchers.Main + Job())
|
||||
private val requestPermission =
|
||||
registerForActivityResult(ActivityResultContracts.RequestPermission()) {
|
||||
webView.reload()
|
||||
private val requestPermissions =
|
||||
registerForActivityResult(ActivityResultContracts.RequestMultiplePermissions()) {
|
||||
if (it.any { it.value }) {
|
||||
webView.reload()
|
||||
}
|
||||
}
|
||||
private val requestStoragePermission =
|
||||
registerForActivityResult(ActivityResultContracts.RequestPermission()) { isGranted ->
|
||||
|
@ -499,6 +501,8 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
|
||||
override fun onPermissionRequest(request: PermissionRequest?) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||||
val alreadyGranted = ArrayList<String>()
|
||||
val toBeGranted = ArrayList<String>()
|
||||
request?.resources?.forEach {
|
||||
if (it == PermissionRequest.RESOURCE_VIDEO_CAPTURE) {
|
||||
if (ActivityCompat.checkSelfPermission(
|
||||
|
@ -506,9 +510,9 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
android.Manifest.permission.CAMERA
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
request.grant(arrayOf(it))
|
||||
alreadyGranted.add(it)
|
||||
} else {
|
||||
requestPermission.launch(android.Manifest.permission.CAMERA)
|
||||
toBeGranted.add(android.Manifest.permission.CAMERA)
|
||||
}
|
||||
} else if (it == PermissionRequest.RESOURCE_AUDIO_CAPTURE) {
|
||||
if (ActivityCompat.checkSelfPermission(
|
||||
|
@ -516,22 +520,20 @@ class WebViewActivity : BaseActivity(), io.homeassistant.companion.android.webvi
|
|||
android.Manifest.permission.RECORD_AUDIO
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
request.grant(arrayOf(it))
|
||||
alreadyGranted.add(it)
|
||||
} else {
|
||||
requestPermission.launch(
|
||||
android.Manifest.permission.RECORD_AUDIO
|
||||
)
|
||||
}
|
||||
} else if (it == PermissionRequest.RESOURCE_AUDIO_CAPTURE) {
|
||||
if (ActivityCompat.checkSelfPermission(
|
||||
context,
|
||||
android.Manifest.permission.MODIFY_AUDIO_SETTINGS
|
||||
) == PackageManager.PERMISSION_GRANTED
|
||||
) {
|
||||
request.grant(arrayOf(it))
|
||||
toBeGranted.add(android.Manifest.permission.RECORD_AUDIO)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (alreadyGranted.size > 0) {
|
||||
request?.grant(alreadyGranted.toTypedArray())
|
||||
}
|
||||
if (toBeGranted.size > 0) {
|
||||
requestPermissions.launch(
|
||||
toBeGranted.toTypedArray()
|
||||
)
|
||||
}
|
||||
} else {
|
||||
// If we are before M we already have permission, just grant it.
|
||||
request?.grant(request.resources)
|
||||
|
|
Loading…
Reference in a new issue