当前位置: 首页 > 知识库问答 >
问题:

尝试视频通话时出现拒绝Android Webview权限错误

童子明
2023-03-14

我正在使用一个webview加载一个具有视频通话功能的url。当我尝试发起视频通话时。我得到以下错误“权限被拒绝。请刷新页面并允许访问您的相机和麦克风”。

如果我给android CAMERA和Record_Audio的运行时权限。将启动视频呼叫,并将视频传输到计算机。但是在移动端,我不能像查看接收方的视频一样查看我的视频。它只显示getDefaultVideoPoster()。

我已经尝试过使用WebChromeClient和WebViewClient,但仍然没有成功。

下面是我的代码:

    private WebView webView;

    webView = findViewById(R.id.webview);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webSettings.setSaveFormData(true);
    webSettings.setSupportZoom(false);
    webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
    webSettings.setPluginState(WebSettings.PluginState.ON);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);


    webView.setWebViewClient(new MyWebViewClient());
    webView.setWebChromeClient(new WebChromeClient() {
        @Override
        public void onPermissionRequest(final PermissionRequest request) {
            myRequest = request;

            for (String permission : request.getResources()) {
                switch (permission) {
                    case "android.webkit.resource.AUDIO_CAPTURE": {
                        askForPermission(request.getOrigin().toString(), Manifest.permission.RECORD_AUDIO, MY_PERMISSIONS_REQUEST_RECORD_AUDIO);
                        break;
                    }
                    case Manifest.permission.RECORD_AUDIO: {
                        askForPermission(request.getOrigin().toString(), Manifest.permission.RECORD_AUDIO, MY_PERMISSIONS_REQUEST_RECORD_AUDIO);
                        break;
                    }
                    case Manifest.permission.CAMERA: {
                        askForPermission(request.getOrigin().toString(), Manifest.permission.CAMERA, MY_PERMISSIONS_REQUEST_CAMERA);
                        break;
                    }
                }
            }
        }

        @Nullable
        @Override
        public Bitmap getDefaultVideoPoster() {
            Log.i(TAG, "getDefaultVideoPoster");
            return drawableToBitmap(getResources().getDrawable( R.drawable.ic_temperature));
            //return super.getDefaultVideoPoster();
        }

        @Override
        public void onShowCustomView(View view, CustomViewCallback callback) {
            super.onShowCustomView(view, callback);
            Log.i(TAG, "onShowCustomView");
            if (view instanceof FrameLayout){
                FrameLayout frame = (FrameLayout) view;
                if (frame.getFocusedChild() instanceof VideoView){
                    VideoView video = (VideoView) 
                    frame.getFocusedChild();
                    frame.removeView(video);
                    video.start();
                }
            }
        }
    });

共有1个答案

闾丘正志
2023-03-14
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

上面行代码对我起作用

 类似资料:
  • 码头工人群 但当我试图启动网络时,它会出现错误 订购者节点 PANIC:打开LevelDB时出错:open/var/hyperledger/production/orderer/index/lock:权限被拒绝 请帮帮忙。

  • 我试图在txt文件中写入从html表单获取的数据,但出现以下错误:警告:fopen(/var/www/4/datos.txt):无法打开流:在/var/www/4/comprobacionformulaio中的权限被拒绝。php第13行警告:fwrite()希望参数1是资源,布尔值在/var/www/4/comprobacionformulaio中给出。php第16行警告:fclose()希望参数

  • 问题内容: 我想编写一个响应S3 put事件的处理程序,以将上载到mp4的任何avi文件转换为。我使用AWS工具包插件在Java中,Eclipse中进行了此操作。对于视频转换,我将ffmpeg与ffmpeg- cli-wrapper一起使用 ,并且在源代码树中提供了ffmpeg的静态(Linux)二进制文件。 我发现上载函数时,二进制文件被放入,但是当我尝试使用编写的测试函数时,出现“权限被拒绝”

  • 首先,我想说我可能缺少了一些基本的东西,但实际上我是Symfony的新手。 当我从terminal创建包时(我使用的是mac),它给了我这个错误;

  • 有趣的是,当我尝试它下载的sudo版本时,但是终端中不能识别。 我的节点是10.16。我的净现值是6.9。0 这是文件问题还是我的Mac?

  • 问题内容: 当我尝试安装pyrebase时,出现此错误消息。 PermissionError:[Errno 13]权限被拒绝:/Users/myname/anaconda/lib/python3.6/site- packages/google/api 我能做什么? 问题答案: 使用了Linux或Windows上运行命令提示符管理员