2011-08-22 117 views
1

我在我的应用程序中有一个webview,它在启动时显示一个html页面。该页面有一个超链接,点击应该显示一个视频。Android webview url重定向

当我运行应用程序并单击视频超链接链接时,没有任何反应。但如果我在android浏览器中加载相同的页面,那么它会启动一个默认的视频播放器,并且一切正常。

我调试它进一步加强了通过把一个日志声明shouldOverrideUrlLoading方法,并注意到,单击超链接,当它被重定向到另一个链接,然后到另一条链路(最终视频流的URL)。

我的问题是:为什么链接在默认的Android浏览器中完美工作,而不是通过web视图。

感谢

+0

你确定这是重定向问题?我认为WebView会处理http重定向。其实,如果有太多的重定向,你会成为一个回调:http://developer.android.com/reference/android/webkit/WebViewClient.html#onTooManyRedirects(android.webkit.WebView,android.os.Message,android.os 。信息)。 – dongshengcn

+0

你想玩什么样的视频?它是一个视频标签吗?或者它是一个视频文件的直接链接?这两种情况的处理方式不同。嵌入式WebView不适用于开箱即用的视频标签。 – dongshengcn

+0

第一个URL这个 http://xxx.yyy.net/playVideo?siteId=xxx_web&userId=4e52948ebdf19&content=3000039950 1重定向看起来像这样 http://stream.yyy.net/adservice/3000039950.3g2?rtspSID = 20891189461314034834721605&ACK = YES和身份验证= ffabf0505850792886dd6d5c26b90c68&RES = 16:9 第二重定向看起来像这样 http://pd.vsnax.yyy.net/adservice/3000039950.3g2?rtspSID=20891189461314034834721605&ack=yes&auth=ffabf0505850792886dd6d5c26b90c68 – prashant

回答

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; 
} 
0

基本上,不要指望您的嵌入式WebView的工作原理与Android默认浏览器相同。默认的浏览器建立在同一个WebView上,但是有很多的自定义。 (特别是在非标准的URI,HTML5的东西周围)

我跟着这里的代码:WebView and HTML5 <video>,我把视频链接放到一个视频标签上,然后我在我自己版本的WebView中播放视频。该行为与默认浏览器有点不同。考虑到更多的时间,我们可以通过查看代码来了解它,但无论如何...

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