WebView 中的 VideoView 不会播放视频?

Posted

技术标签:

【中文标题】WebView 中的 VideoView 不会播放视频?【英文标题】:VideoView from WebView Wont Play Video? 【发布时间】:2011-11-24 07:34:28 【问题描述】:

我的应用当前使用 WebView,然后使用 WebChromeClient 和 onShowCustomView 转到 VideoView 的视频。但是,我不确定单击视频时如何获得正确的链接?它出现说无法播放视频,但这是因为我根本没有将视频传递给它。如何获取被点击的链接的 URL?有什么帮助吗?

这是带有 WebView 的 Activity:

@Override
public void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mnwv_main);

    myWebView = (WebView) findViewById(R.id.webview);
    myWebView.getSettings().setjavascriptEnabled(true);
    myWebView.getSettings().setPluginsEnabled(true);     

    myWebView.setWebChromeClient(new WebChromeClient()   

    public void onShowCustomView(View view, CustomViewCallback callback)   
    super.onShowCustomView(view, callback); 
    videoURL = myWebView.getUrl();
    in= new Intent(MNWVMainPage.this,MainPageVideoHandler.class);
    startActivity(in);   
    );       

    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl("http://www.meanwhileinwv.com"); 

如果我点击一个视频,这个活动就会开始:

public class MainPageVideoHandler extends Activity 

VideoView myVideoView;

@Override
public void onCreate(Bundle savedInstanceState) 
  super.onCreate(savedInstanceState);
  setContentView(R.layout.video_player);

   myVideoView = (VideoView) findViewById(R.id.videoview);
   MediaController mediaController = new MediaController(this);
   mediaController.setAnchorView(myVideoView);
   String video = (MNWVMainPage.videoURL);
   myVideoView.setMediaController(mediaController);
   myVideoView.setVideoPath(video);
   myVideoView.start();


   myVideoView.setOnCompletionListener(new OnCompletionListener()          
     @Override  
        public void onCompletion(MediaPlayer mp)   
        mp.stop();
        myVideoView.stopPlayback();
        setContentView(R.layout.mnwv_main);  
          
   );  

   myVideoView.setOnErrorListener(new OnErrorListener()   
        @Override  
        public boolean onError(MediaPlayer mp, int what, int extra)   
            return false;  
          
   );        
    

【问题讨论】:

【参考方案1】:

您应该在您的WebViewClient 中实现shouldOverrideUrlLoading(..)。这使您有机会拦截 URL 加载并显示您的视频视图。

【讨论】:

以上是关于WebView 中的 VideoView 不会播放视频?的主要内容,如果未能解决你的问题,请参考以下文章

android平板videoview播放视频,webview播放flash能旋转180吗?

我可以将 VideoView 作为 WebView 背景吗?

VideoView或WebView的文件协议支持?

Android - VideoView 不会播放有声视频

android - 使用 webview 或 videoview 在应用程序中闪烁实时流

Android VideoView 中的纵向视频不会占用整个屏幕宽度