【问题标题】:Granting Permissions for Camera and Audio to WebView?将摄像头和音频的权限授予 WebView?
【发布时间】:2020-11-13 05:54:52
【问题描述】:

我已经实现了WebChromeClientonPermissionRequest 我无法访问应用程序内的相机和音频。

我的代码是

@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)

【问题讨论】:

    标签: android webview illegalstateexception


    【解决方案1】:

    如果您在第一行有super 呼叫

    super.onPermissionRequest(request)
    

    那么您可能无法像您在循环中尝试下一个一样再次“手动”调用grantdeny。将您的代码移到super 调用上方,并确保不会为您自己处理的权限调用super - 如果没有这些,请准备好PermissionRequest,如果不是空的(请求的任何其他权限),然后使用此调用super修改请求

    还要确保整个应用程序已经获得了适当的权限

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      • 2023-03-13
      • 2020-09-19
      • 2020-05-14
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      相关资源
      最近更新 更多