2011-08-22 135 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