Android: WebView - камера и Mi c не включены для конференции - PullRequest
1 голос
/ 27 мая 2020

Подключаемся к https://meet.jit.si для видеоконференции. Если мы используем браузер chrome на устройстве Android (протестировано как на Android 7, так и на 10), мы сможем присоединиться с включенной камерой и Mi c. Возможность включать и выключать их. Но если мы попробуем то же самое с помощью веб-просмотра, мы даже не получим запрос с веб-сайта о разрешении доступа и получим ошибку «Не удалось получить доступ к камере / mi c» при попытке включить их.

Это наш код.

Манифест

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

Получение разрешения времени выполнения при загрузке

    String[] permissions =
            {Manifest.permission.READ_EXTERNAL_STORAGE,
             Manifest.permission.WRITE_EXTERNAL_STORAGE,
             Manifest.permission.INTERNET,
             Manifest.permission.RECORD_AUDIO,
             Manifest.permission.CAMERA};

    ActivityCompat.requestPermissions(
            this,
            permissions,
            1010);

Загрузка веб-страницы в WebView

String url = "https://meet.jit.si/testingconf49854";
WebView webView = findViewById(R.id.webView);
WebSettings mWebSettings = webView.getSettings();
mWebSettings.setLoadsImagesAutomatically(true);
mWebSettings.setBlockNetworkLoads(false);
mWebSettings.setJavaScriptEnabled(true);
mWebSettings.setLoadWithOverviewMode(true);
mWebSettings.setUseWideViewPort(false);
mWebSettings.setTextZoom(70);
mWebSettings.setCacheMode( WebSettings.LOAD_NO_CACHE );
mWebSettings.setUserAgentString("Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36");
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setScrollbarFadingEnabled(true);

Map<String, String> noCacheHeaders = new HashMap<String, String>(2);
noCacheHeaders.put("Pragma", "no-cache");
noCacheHeaders.put("Cache-Control", "no-cache");
webView.loadUrl(url, noCacheHeaders);

Сообщите нам, что нам здесь не хватает. Ценю вашу помощь.

1 Ответ

2 голосов
/ 27 мая 2020

После получения этих разрешений вам необходимо переопределить onPermissionRequest в WebChromeClient следующим образом:

webView.setWebChromeClient(new WebChromeClient() {
  @Override
   public void onPermissionRequest(final PermissionRequest request) {
       request.grant(request.getResources());
}
});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...