WebView无法打开Android默认视频播放器?

时间:2011-06-06 01:46:02

标签: java android webview

当我在我的Android设备的默认网络浏览器上查看this page并点击第一个视频时,它会触发我设备的默认视频播放器。它加载和播放。

然而,当我在我的应用程序中使用WebView查看相同的链接时,它不会打开默认的视频播放器。可能是什么问题?

我正在使用this link中的webview代码。

我也像在docs中所说的那样以全屏模式制作了webview,使用此代码全屏:

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/");

     }
}

2 个答案:

答案 0 :(得分:3)

如果您检测到支持的视频mimetype的网址返回true,则必须附加您自己的WebViewClient并覆盖shouldOverrideUrlLoading(),然后使用该网址启动默认活动。这是一个未经测试的样本。

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; 
}});

希望这会有所帮助。

答案 1 :(得分:2)

如果您在html5中获得WebView视频代码,则不会调用上述代码(使用WebViewClient),而是必须使用WebChromeClient来处理它,如图所示在波纹管链接

How to play a video in a webview with android?

我已经尝试过并且运行良好:)

上述代码(使用WebViewClient)仅在我们必须通过用户点击锚标记或通过WebView

中的任何超链接处理对另一页面的重定向请求时才有用