Как получить разрешения для микрофона и камеры с веб-просмотром - PullRequest
0 голосов
/ 20 марта 2020

Я получаю сообщение об ошибке «Либо грант (), либо deny () уже вызван», когда я пытаюсь получить доступ к странице в WebView, требующей доступа как к микрофону, так и к камере.

Это мое onPermissionRequest, но по какой-то причине, если оба они запрашиваются в одно и то же время, приложение закрывается, но только один запрос, кажется, работает нормально.

           override fun onPermissionRequest(permissionRequest: PermissionRequest?) {
            Log.d(TAG, "onJSPermissionRequest")

            val mPermissionRequest: PermissionRequest? = permissionRequest

            for (request in permissionRequest?.resources!!){
                if (request == PermissionRequest.RESOURCE_VIDEO_CAPTURE){
                    val alertDialogBuilder = AlertDialog.Builder(mContext)
                            .setTitle("Allow Permission to Camera access!")
                            .setPositiveButton("Allow") { dialog, which ->
                                dialog.dismiss()
                                mPermissionRequest?.grant(arrayOf(PermissionRequest.RESOURCE_VIDEO_CAPTURE))
                            }
                            .setNegativeButton("Deny") { dialog, which ->
                                dialog.dismiss()
                                mPermissionRequest?.deny()
                            }
                    val alertDialog = alertDialogBuilder.create()
                    alertDialog.show()
                }
                if(request == PermissionRequest.RESOURCE_AUDIO_CAPTURE){
                    val alertDialogBuilder = AlertDialog.Builder(mContext)
                            .setTitle("Allow Permission to Microphone access!")
                            .setPositiveButton("Allow") { dialog, which ->
                                dialog.dismiss()
                                mPermissionRequest?.grant(arrayOf(PermissionRequest.RESOURCE_AUDIO_CAPTURE))
                            }
                            .setNegativeButton("Deny") { dialog, which ->
                                dialog.dismiss()
                                mPermissionRequest?.deny()
                            }
                    val alertDialog = alertDialogBuilder.create()
                    alertDialog.show()
                }
            }
        }

        override fun onPermissionRequestCanceled(request: PermissionRequest?) {
            super.onPermissionRequestCanceled(request)
            Toast.makeText(mContext,"Permission Denied",Toast.LENGTH_SHORT).show()
        }
    }
}

Я знаю, что проблема заключается в том, что я дважды запрашиваю грант (удаление гранта команда в одном из случаев решает cra sh, но теперь дает разрешения), но ресурсы для обоих запросов различны ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...