如何通过WebView同时获得麦克风和摄像头权限

时间:2020-03-20 05:48:43

标签: android-studio webview

当我尝试访问WebView中同时需要麦克风和摄像机访问权限的页面时,出现错误“ grant()或deny()已被调用”。

那是我的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()
        }
    }
}

我知道问题是因为我两次要求授予许可(在其中一种情况下删除了Grant命令可以解决崩溃问题,但现在授予了权限),但是两个请求的资源都不同。

0 个答案:

没有答案