2010-02-19 30 views
4

我有一個webview,如果用戶點擊一個鏈接,它打開在同一個webview(我控制與shouldOverrideUrlLoading()),但如果它是一個視頻鏈接(mp4,3gp)它不會啓動媒體播放器再現視頻(就像在普通的瀏覽器應用程序中那樣)。 在webview中點擊視頻鏈接時如何強制媒體播放器啓動?Android推出mediplayer從webview的視頻?

謝謝!

+0

你能否澄清你所說的「如果它是一個視頻鏈接(MP4,3GP等)沒有啓動媒體播放器重放視頻」是什麼意思?你的意思是說你沒有用'shouldOverrideUrlLoading()'調用這些URL嗎? – CommonsWare 2010-02-19 23:34:01

回答

1

我的意思是說,當url指向一個視頻文件時,我想讓mediaplayer重現它。每個其他的URL都被webview處理,這是可以的,但是當URL指向一個視頻文件時,當我嘗試加載該url時沒有任何反應。

0

首先,據我所知,Android只支持rtsp播放。所以點擊鏈接,給document.location.href =「rtsp://你的視頻網址」;

4

在這種情況下,您將需要執行一個意圖加載外部視頻網址。 這也方便用戶返回到前一個視圖(活動)沒有任何問題。請參見下面的代碼....

/*----------------------------------------------------------------------------------------------- 
* WebViewClientHandler() allows for overriding default phone web browser so we can load in gui 
*----------------------------------------------------------------------------------------------*/ 
private class WebViewClientHandler extends WebViewClient { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 

    Uri uri = Uri.parse("http://YOUTSTREAM.FLV"); 
    Intent intent = new Intent(Intent.ACTION_VIEW, uri); 

    startActivity(intent); 
     return true; 
    } 
} 
2

現在可能是無關緊要的,但你看到的是在瀏覽器不是媒體播放器,而是一個Android擁有VideoView。點擊視頻鏈接時,將調用WebChromeClient中的onShowCustomView (View view, WebChromeClient.CustomViewCallback callback)。應用程序有義務顯示該視圖,然後通知WebView不再需要視圖。

1

你應該試試這個

WebView webView = (WebView) findViewById(R.id.embeddedWebView); 
webView.setDownloadListener(new DownloadListener() 
    { 
     public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size) 
     { 
      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); 
      } 
     } 
    }); 
+0

這段代碼去哪裏? – talentedmrjones 2012-12-27 19:39:42