Android - 检查是否未安装媒体播放器并显示祝酒词

时间:2013-04-18 23:02:40

标签: android android-layout android-webview android-mediaplayer

我一直在尝试在webview中播放html5视频。我实际上有这个工作,但后来我有方向问题。我决定让媒体播放器处理文件,以便它可以处理方向等。这似乎很有效。但是,我是否修改了代码,以便如果播放器不可用,它会提供一个Toast并且不会导致我的应用程序崩溃?有什么建议吗?

private class MyWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (Uri.parse(url).getHost().equals("my.site.com")) {
                return false;
            }else if(url.endsWith(".mp4")) {
                Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(url));
                intent.setDataAndType(Uri.parse(url), "video/*");
                view.getContext().startActivity(intent);
                return true;
            }

            // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }


    }

1 个答案:

答案 0 :(得分:0)

如果要检查当前硬件是否能够处理意图:

   if(intent.resolveActivity(getPackageManager()) != null){
// start mediaplayer
}else{
//toast no mediaplayer available
}

如果您想查看特定的MediaPlayer(在此示例中为Google Play电影):

if(isMediaPlayerAvailable()){
    // start mediaplayer
    }else{
    //toast no mediaplayer available
    }


public static boolean isMediaPlayerAvailable(Context context) {
        String mVersion;
        try {
            mVersion = context.getPackageManager().getPackageInfo(
                    "com.google.android.videos", 0).versionName;
              Log.d("MediaPlayer", "Installed: " + mVersion);
              return true;
        } catch (NameNotFoundException e) {
              Log.d("MediaPlayer", "Not installed");
              return false;
        }
       }

不同方法:隐藏网页视图,在VideoView中播放视频

您应该在布局xml中创建一个带android:visiblity="gone"的VideoView。

else if(url.endsWith(".mp4")) {

view.setVisibility(View.GONE);

   VideoView myVideoView = (VideoView)findViewById(R.id.myvideoview);
   myVideoView.setVisibility(View.VISIBILE);
   myVideoView.setVideoURI(Uri.parse(url));
   myVideoView.setMediaController(new MediaController(this));
   myVideoView.requestFocus();
   myVideoView.start();
            }

您还应该查看可以添加到VideoView的不同监听器,以便在视频播放完毕或无法加载时恢复可见性更改。

VideoView & Fullscreen & Orientation changes - Android有一个答案,说明如何在方向更改后在同一位置恢复播放。