我的应用程序中有一个webview,在启动时会显示一个html页面。该页面有一个超链接,点击该链接应该显示一个视频。
当我运行应用程序并单击视频超链接时,没有任何反应。但是如果我在Android浏览器中加载相同的页面,那么它会启动一个默认的视频播放器,一切正常。
我通过在shouldOverrideUrlLoading方法中放入一个日志语句来调试它,并注意到,当单击超链接时,它会被重定向到另一个链接,然后再转到另一个链接(最终视频流URL)。
我的问题是:为什么链接在默认的android浏览器中完美运行,而不是通过webview。
由于
答案 0 :(得分:1)
当您单击超链接时,发生的情况是该链接可能包含一些弹出窗口。您需要在webview的WebChromeClient中定义onCreateWindow函数。这将处理如何处理打开新窗口或弹出窗口的调用。
public boolean onCreateWindow (WebView view, boolean dialog, boolean userGesture, Message resultMsg) {
((WebView.WebViewTransport) resultMsg.obj).setWebView(myWebView);
resultMsg.sendToTarget();
return true;
}
答案 1 :(得分:1)
声明WebView
后,您应该启用javascript,然后WebView
将作为浏览器使用。
例如:
WebView mwebview = new WebView(this);
setContentView(mwebview);
mwebview.getSettings().setJavaScriptEnabled(true);
或
mwebview.getSettings().setPluginState(PluginState.ON); // this is for newer API's
答案 2 :(得分:0)
基本上,不要指望您的嵌入式WebView与Android默认浏览器的工作方式相同。默认浏览器构建在同一WebView上,但有很多自定义。 (特别是关于非标准的uri,HTML5的东西)
我从这里跟随代码:WebView and HTML5 <video>,我将视频链接放到视频标签上,然后我在我自己的WebView版本中播放了视频。该行为与默认浏览器略有不同。如果有更多时间,我们可以通过查看代码来解决这个问题,但无论如何......