Я использую WebView на Nativescript для реализации функций tokbox.js, фронтальная камера работает, но при попытке выполнить своп (publisher.cycleVideo ()) я получаю следующую ошибку:
хром: [ОШИБКА: web_contents_delegate.cc (204)] WebContentsDelegate :: CheckMediaAccessPermission: не поддерживается.
Работают другие функциональные возможности Tokbox, например, скрытие видео или отключение звука, так что это пример кода, который у меня есть в проекте:
- Загруженный метод для 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);
}
- Манифест 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" />
- Функция подкачки для цикла Video Tokbox
publisher.cycleVideo().then(({ deviceId }) => {
console.log(deviceId);
}).catch((err) => {
alert('cycleVideo error ' + err.message);
});
}
Есть ли у вас какие-либо идеи, которые следует сделать, чтобы решить эту проблему? Или что я пропустил, чтобы настроить для этого?