#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.
-
Использование встроенного SDK https://developers.google.com/youtube/android/player/downloads /
-
Использование 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(); })()");