Как автозапуск iframe youtube на webview Android

#android #iframe #youtube #android-webview

#Android #iframe #YouTube #android-webview

Вопрос:

Я прочитал все, что связано с этой проблемой, и пока ничего не получалось :

  • Добавьте параметр «автозапуск = 1» в конец URL-адреса (например https://www.youtube.com/embed/%s?autoplay=1 ), %s являющийся идентификатором видео.
  • Кажется, Google отключил его по умолчанию: https://bugs.chromium.org/p/chromium/issues/detail?id=159336
  • Внедрение Javascript не будет работать :

     mWebView.setWebViewClient(new WebViewClient() {
        public void onPageFinished(WebView view, String url) {
            mWebView.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()");
        }
    
    });
    mWebView.getSettings().setJavaScriptEnabled(true);
      

Какие-либо новые рабочие решения?

Ответ №1:

В принципе, больше не позволяет автозапуск во внутреннем webview Android. Тем не менее, вы можете попробовать реализовать автозапуск с помощью API YouTube или iframe api.

  1. Использование встроенного SDK https://developers.google.com/youtube/android/player/downloads /

  2. Использование iframe API https://developers.google.com/youtube/iframe_api_reference

Ответ №2:

Вы можете попробовать выполнить один щелчок по webview

 @Override
public void onPageFinished(WebView view, String url) {
    float x = view.getWidth() / 2;
    float y = view.getHeight() / 2;
    MotionEvent motionEventDown = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, x, y, 0.5f, 0.5f, 0, 0.5f, 0.5f, InputDevice.SOURCE_TOUCHSCREEN, 0);
    MotionEvent motionEventUp = MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis()   200, MotionEvent.ACTION_UP, x, y, 0.5f, 0.5f, 0, 0.5f, 0.5f, InputDevice.SOURCE_TOUCHSCREEN, 0);
    view.dispatchTouchEvent(motionEventDown);
    view.dispatchTouchEvent(motionEventUp);
}
  

Ответ №3:

Немного поздно, но я надеюсь, что это поможет.

После завершения загрузки вашей встроенной URL-страницы YouTube запустите это:-

 yourWebView.loadUrl("javascript:(function() { document.getElementsByClassName('ytp-large-play-button ytp-button')[0].click(); })()");