2011-04-27 109 views
4

在我試圖創建一個通過HTML5(和通過Flash不)播放YouTube視頻網頁視圖,我試圖執行this article逐字,直接在我的活動的onCreate():DownloadListener.onDownloadStart()從來沒有所謂的

WebView webView = (WebView) findViewById(R.id.embeddedWebView); 
    webView.setDownloadListener(new DownloadListener() 
    { 
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size) 
    { 
     Log.v("TAG", "url: " + url + ", mimeType: " + mimeType); 

     Intent viewIntent = new Intent(Intent.ACTION_VIEW); 
     viewIntent.setDataAndType(Uri.parse(url), mimeType); 

     try 
     { 
     startActivity(viewIntent); 
     } 
     catch (ActivityNotFoundException ex) 
     { 
     Log.w("YourLogTag", "Couldn't find activity to view mimetype: " + mimeType); 
     } 
    } 
    }); 

它沒有被調用由於某種原因,所以在我的代碼注意到沒有在任何地方我指定「實現DownloadListener」,我重新實現它做爲所定義

public class MyDownloadListener implements DownloadListener 
012單獨的類

,並像上面一樣實現onDownloadStart()(將activity作爲參數傳遞,以便它可以調用startActivity()。然後在的onCreate(),我簡單地做:

mDownloadListener = new MyDownloadListener(this); 
mWebView.setDownloadListener(mDownloadListener); 

我再次嘗試在YouTube上http://broken-links.com/tests/video/,我仍然不logcat中看到任何痕跡是onDownloadStart()是不斷被調用。

我需要做些什麼才能讓它被調用?我錯過了什麼?

+0

我發現另一篇文章描述類似的問題http://stackoverflow.com/questions/3926629/downloadlistener-not-working但他的「解決方案」是聲明DownloadListener不工作,並使用onLoadResource作爲解決方法。我希望看到一個使DownloadListener正常工作的解決方案。 – uTubeFan 2011-04-27 00:31:58

回答

6

setDownloadListener在WebView認爲內容不能被渲染引擎處理時設置偵聽器。

註冊當渲染引擎無法處理內容時要使用的接口,而應該下載該接口。這將取代當前的處理程序。

該webview使用WebKit呈現引擎,我相信可以(或認爲它可以)處理HTML5,以便偵聽器不會被調用。

+1

感謝(+1)這個教育的答案。有沒有一種編程方式來驗證這一點,只禁用** HTML5支持,**沒有**禁用JavaScript? – uTubeFan 2011-04-27 13:39:24

+0

截至目前,這個非常明智的答案無法通過視頻進行積極驗證,因爲我沒有找到禁用HTML5視頻而不禁用Javascript的方法。所以我必須接受,儘管無法驗證這一點。謝謝。 – uTubeFan 2011-05-02 18:39:03

相關問題