当我尝试访问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命令可以解决崩溃问题,但现在授予了权限),但是两个请求的资源都不同。