Jak sam zauważyłeś, wszystkie instrukcje gry automatycznej w twoim kodzie będą ignorowane podczas ładowania. Więc zaimplementujemy funkcję, która dostanie wideo w ciele i zacznie grać.
Poniższy kod JavaScript może to zrobić:
(function() {
document.getElementsByTagName('video')[0].play();
})()
Aby wykonać ten kod po załadowaniu strony, musimy ustawić WebViewClient i wdrożenie onPageFinished()
webview.setWebViewClient(new CordovaWebViewClient(this, webview) {
// autoplay when finished loading via javascript injection
public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); }
});
final WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setPluginState(WebSettings.PluginState.ON);
A full example:
webview = new CordovaWebView(this);
setContentView(webview);
final WebSettings settings = webview.getSettings();
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setPluginState(WebSettings.PluginState.ON);
webview.setWebViewClient(new CordovaWebViewClient() {
// autoplay when finished loading via javascript injection
public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); }
});
webview.loadUrl("http://html5demos.com/video");
Czy próbowałeś zaproponowanego rozwiązania? – lifeisfoo