WebContentsDelegate :: CheckMediaAccessPermission: не поддерживается - PullRequest
0 голосов
/ 30 марта 2019

Я использую WebView на Nativescript для реализации функций tokbox.js, фронтальная камера работает, но при попытке выполнить своп (publisher.cycleVideo ()) я получаю следующую ошибку:

хром: [ОШИБКА: web_contents_delegate.cc (204)] WebContentsDelegate :: CheckMediaAccessPermission: не поддерживается.

Работают другие функциональные возможности Tokbox, например, скрытие видео или отключение звука, так что это пример кода, который у меня есть в проекте:

  1. Загруженный метод для WebView с запросом разрешений для Android.
       this.webview = webargs.object;
       if(isAndroid){
           var TNSWebViewClient =
           android.webkit.WebViewClient.extend({
             shouldOverrideUrlLoading: function (view, url) {
               if (url != null && url.startsWith("http://")) {
                 console.log(url);
                 // use openUrl form utils module to open the page in a browser
                 return true;
               } else {
                 return false;
               }
             }

           });

         var TNSWebChromeClient =
           android.webkit.WebChromeClient.extend({
             onPermissionRequest: function (request) {
               request.grant(request.getResources());
             }
           });

           this.webview.android.getSettings().setDisplayZoomControls(false);
           this.webview.android.getSettings().setBuiltInZoomControls(false);
           this.webview.android.getSettings().setAllowFileAccessFromFileURLs(true);
           this.webview.android.getSettings().setAllowUniversalAccessFromFileURLs(true);
           this.webview.android.getSettings().setMediaPlaybackRequiresUserGesture(false);
           this.webview.android.getSettings().setUseWideViewPort(true);
           this.webview.android.getSettings().setDomStorageEnabled(true);
           this.webview.android.setWebViewClient(new TNSWebViewClient());
           this.webview.android.setWebChromeClient(new TNSWebChromeClient());
       }
       this.webview.src = "~/opentok/opentok.component.html?data=" + JSON.stringify(this.data);
   }
  1. Манифест Android с разрешениями
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BROADCAST_STICKY"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
  1. Функция подкачки для цикла Video Tokbox
        publisher.cycleVideo().then(({ deviceId }) => {
            console.log(deviceId);
        }).catch((err) => {
            alert('cycleVideo error ' + err.message);
        });
    }

Есть ли у вас какие-либо идеи, которые следует сделать, чтобы решить эту проблему? Или что я пропустил, чтобы настроить для этого?

...