2011-06-06 74 views
5

當我在我的android設備的默認網頁瀏覽器上查看this page並點擊第一個視頻時,它會觸發我設備的默認視頻播放器。它加載和播放。WebView不打開android默認視頻播放器?

但是,當我在我的應用程序中使用WebView查看相同的鏈接時,它不打開默認視頻播放器。可能是什麼問題呢?

我在使用webview代碼this link

我還做了在全屏模式下喜歡什麼是在docs說web視圖,則使用此代碼去全屏:

requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

編輯:現在,我使用下面的代碼,但仍不工作,任何想法?

package com.example.Playmp4OnWebView; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Window; 
import android.view.WindowManager; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class PlayMp4OnWebView extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); 

      WebView webview = new WebView(this); 
      setContentView(webview); 

      WebSettings webSettings = webview.getSettings(); 
      webSettings.setJavaScriptEnabled(true); 
      webSettings.setSupportZoom(false); 
      webSettings.setPluginsEnabled(true); 
      webSettings.setAllowFileAccess(true); 

      webview.setWebViewClient(new WebViewClient(){ 

       public boolean shouldOverrideUrlLoading(WebView view, String url){ 
        if(url.endsWith(".mp4")){ 
         Intent i = new Intent(Intent.ACTION_VIEW); 
         i.setData(Uri.parse(url)); 
         startActivity(i); //warning no error handling will cause force close if no media player on phone. 
         return true; 
        } 
        else return false; 
       }}); 

     //This will load the webpage that we want to see 
     webview.loadUrl("http://www.broken-links.com/2010/07/30/encoding-video-for-android/"); 

    } 
} 

回答

3

你必須附上自己WebViewClient並覆蓋shouldOverrideUrlLoading()如果發現有支持的視頻的URL的MIME類型返回true,然後用URL啓動默認的活動。這是一個未經測試的樣本。

mWebView.setWebViewClient(new WebViewClient(){ 

public boolean shouldOverrideUrlLoading(Webview view, String url){ 
    if(url.endsWith(".mp4") || url.endsWith("some other supported type")){ 
      Intent i = new Intent(Intent.ACTION_VIEW); 
      i.setData(Uri.parse(url)); 
      startActivity(i); //warning no error handling will cause force close if no media player on phone. 
      return true; 
    } 
    else return false; 
}}); 

希望這有助於。

+0

嗨@schwiz,非常感謝您的回覆,我用我更新的代碼和您的建議代碼更新了問題。但它仍然不會觸發我的設備的默認媒體播放器。有任何想法嗎? – Kris 2011-06-06 02:47:03

+0

@Kris好,如果它加載在相同的webview,而不是啓動一個活動或forceclosing然後URL不能以mp4結束我會在shouldOverrideUrlLoading中設置一個斷點,看看那裏發生了什麼。 – schwiz 2011-06-06 04:56:58

+0

當我點擊vid時,沒有什麼好處,它不會加載或啓動任何活動或強制關閉。其實,第一個vid點擊不使用href,它使用html5

2

如果您得到的(使用WebViewClient)的WebView那麼上面的代碼html5視頻標籤將不會被調用,而是你將與WebChromeClient來處理它,如在波紋管連接

How to play a video in a webview with android?

我已經嘗試過了,效果不錯:)

上面的代碼(使用WebViewClient)是有用的,只有當我們要處理的定位標記或通過在任何超鏈接通過用戶點擊一個重定向請求到另一個頁面WebView

相關問題