是否向WebView授予相机和音频权限



我已经实现了WebChromeClient,从onPermissionRequest我无法访问应用程序中的摄像头和音频。

我的代码iS

@Override
public void onPermissionRequest(PermissionRequest request) {
super.onPermissionRequest(request);
final String[] requestedResources = request.getResources();
for (String r : requestedResources) {
if ((r.equals(PermissionRequest.RESOURCE_VIDEO_CAPTURE)) || r.equals(PermissionRequest.RESOURCE_AUDIO_CAPTURE)) {
request.grant(new String[]{PermissionRequest.RESOURCE_VIDEO_CAPTURE,PermissionRequest.RESOURCE_AUDIO_CAPTURE});
break;
}
}
}

但我一直收到一个异常和错误,如下

> W/System.err: **java.lang.IllegalStateException**: **Either grant() or
> deny() has been already called**. W/System.err:     at
> org.chromium.android_webview.permission.AwPermissionRequest.b(chromium-TrichromeWebViewGoogle.aab-stable-1:3)
>         at org.chromium.android_webview.permission.AwPermissionRequest.a(chromium-TrichromeWebViewGoogle.aab-stable-1:1)
>         at xe.deny(chromium-TrichromeWebViewGoogle.aab-stable-1:1)
>         at com.royalconx.MainActivity$MyChromeClient.onPermissionRequest(MainActivity.java:96)
>         at org.chromium.android_webview.AwContents.onPermissionRequest(chromium-TrichromeWebViewGoogle.aab-stable-1:9)
> W/System.err:     at android.os.MessageQueue.nativePollOnce(Native
> Method)
>         at android.os.MessageQueue.next(MessageQueue.java:363)
>         at android.os.Looper.loop(Looper.java:173)
>         at android.app.ActivityThread.main(ActivityThread.java:8178)
>         at java.lang.reflect.Method.invoke(Native Method)
>         at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
>         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1101)

如果在第一行中有super调用

super.onPermissionRequest(request)

那么你可能不能";手动";再次调用grantdeny,就像您尝试循环中的下一个一样。将代码移到super调用之上,并确保super不会被自己处理的置换调用-准备没有这些的PermissionRequest,如果不是空的(请求任何其他置换(,则使用此修改后的请求调用super

还要确保整个应用程序已经获得了正确的排列

最新更新