当前位置: 代码迷 >> 综合 >> Android 调用系统播放器java.io.FileNotFoundException: No content provider:MediaPlayer: setDataSource: IOExce
  详细解决方案

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

热度:25   发布时间:2023-10-23 07:19:45.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);}}

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

  相关解决方案