Android 调用系统播放器java.io.FileNotFoundException: No content provider:MediaPlayer: setDataSource: IOExce

2019年5月10日 19点热度 0条评论 来源: 观眼看世界

正常调用系统播放器都很简单,网上的代码也是多的一批。比如

String extension = MimeTypeMap.getFileExtensionFromUrl(Url);
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
Intent mediaIntent = new Intent(Intent.ACTION_VIEW);
mediaIntent.setDataAndType(Uri.parse(newUrl), mimeType);
startActivity(mediaIntent);

这个就很好用了,但是我调用在小米手机上正常,华为和vivo手机出出现黑屏,视频无法播放的问题,错误如下:

05-10 10:33:32.859 15170-15170/? E/MediaPlayer: setDataSource: IOException! uri=06a35be2ff4a42b38ad6fcda2d266c6e/196327b6fae9445baec0eda4ded8d1ea-23fabd8443a07e681576e09477b7642b-ld.mp4
java.io.FileNotFoundException: No content provider: 06a35be2ff4a42b38ad6fcda2d266c6e/196327b6fae9445baec0eda4ded8d1ea-23fabd8443a07e681576e09477b7642b-ld.mp4

网上找了很多资料没什么软用,怀疑是权限啊什么的原因!后面发现是不是Url的问题,然后,选用了没有添加https头部的视频能正常播放,所以就愉快的进行了一下的改正

if (!TextUtils.isEmpty(video_url)) {
    if (video_url.contains("https")) {
        String newUrl = video_url.substring(0, 4) + video_url.substring(5, video_url.length());
        Log.i("TAG", newUrl);
        String extension = MimeTypeMap.getFileExtensionFromUrl(newUrl);
        String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
        Intent mediaIntent = new Intent(Intent.ACTION_VIEW);
        mediaIntent.setDataAndType(Uri.parse(newUrl), mimeType);
        startActivity(mediaIntent);
    }

}

所以咋说的,都得尝试一下,这个错误,希望对你们有用,少采坑。。

    原文作者:观眼看世界
    原文地址: https://blog.csdn.net/qq_34952110/article/details/90073160
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。