2011-01-26 74 views
2

我已經用Webview顯示了WebApp。在這些網頁中,我有一些視頻鏈接(MP4,3GP ...)。 當我點擊鏈接時,什麼都沒有發生?有人可以幫助我解決這個問題嗎?在webview中打開視頻播放器?

public class luxgateway extends Activity { 

WebView myWebView; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main);  

    myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.getSettings().setAllowFileAccess(true); 

    WebViewClient webViewClient = new MyWebViewClient(); 
    myWebView.setWebViewClient(webViewClient); 

    myWebView.loadUrl("http://www.XXX.com/demo.html"); 
} 

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { 
     myWebView.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

private class MyWebViewClient extends WebViewClient { 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     if (url.endsWith(".3gp")) { 
      Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url)); 
      view.getContext().startActivity(intent);  
      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 
    } 
} 

我在這臺服務器上發現了一些關於此代碼的部分內容,但它對我沒有幫助。

 if (url.endsWith(".3gp")) { 
      Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url)); 
      view.getContext().startActivity(intent);  
      return true; 
     } else { 
      return super.shouldOverrideUrlLoading(view, url); 
     } 

在這種情況下,我只限於3GP文件,但我不知道哪個擴展將放置在網站上。

我tryed這個代碼thisout測試,只看到如果視頻可以播放(或錄像機僅與該代碼

   Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url)); 
      view.getContext().startActivity(intent);  
      return true; 

開始在這種情況下,視頻僅僅dowloaded。我想有樣品互動爲webrowser。當我點擊視頻鏈接時,瀏覽器問至極球員,我想用戶對這部影片。

感謝的對你有所幫助。

回答

5

如果你可以有更好的運氣指定該URI包含視頻:

Intent intent = new Intent(Intent.ACTION_VIEW) //I encourage using this instead of specifying the string "android.intent.action.VIEW" 
intent.setDataAndType(Uri.parse(url), "video/3gpp"); 
view.getContext().startActivity(intent); 

因爲我們沒有指定特定的包來處理上述意圖,所以它被稱爲隱式意圖。對於隱式意圖,如果有多個包處理您指定的內容類型,則會要求您在它們之間進行選擇。這應該會給你你想要的行爲。