MediaPlayer: Couldn't open /storage/emulated/0/kgmusic/download/独家记忆.mp3: java.io.FileNotFoundEx

Posted 再见理想

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MediaPlayer: Couldn't open /storage/emulated/0/kgmusic/download/独家记忆.mp3: java.io.FileNotFoundEx相关的知识,希望对你有一定的参考价值。

写了一个音乐播放器,播放的时候,会出现这样的问题:比如说我点击第三首歌曲,结果没有播放第三首歌曲,而直接播放了第四首歌曲。看了一下日志。发现报错:MediaPlayer: Couldn‘t open /storage/emulated/0/kgmusic/download/陈小春 - 独家记忆.mp3: java.io.FileNotFoundException: No content provider: /storage/emulated/0/kgmusic/download/陈小春 - 独家记忆.mp3

 

详见截图:

技术分享图片

大家也可以搜一下MediaPlayer:error(-38,0)这个错误。

 

英语好的可以看一下这个链接。

https://stackoverflow.com/questions/46080969/mediaplayer-java-io-filenotfoundexception-no-content-provider

 

截图给大家看看:

技术分享图片

红框里的英文大家可以仔细看一下:说的是MediaPlayer - java.io.FileNotFoundException: No content provider这个bug可能会发生在安卓7.0(牛轧糖)或者更高的版本上。如果你把你的app运行在安卓7.0(牛轧糖)或者更高版本的安卓系统上,你最好使用Content Provider。

 

PS:我的app运行在了7.0的手机上,而且我也没用Content Provider。所以导致了这个问题。

 

 

 

我的音乐播放器的module的build.gradle如下图所示,最低版本是11,目标版本是22,编译版本是23,把这个音乐播放器运行到安卓7.0的小米手机上时,就会出现上面的bug。

技术分享图片

 

 

 

This issue occurs in Nougat or higher version if you are using nougat or higher version you have to use Content Provider.

Create an XML file (for example file_provider_paths.xml) in XML resources folder:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="shared" path="shared/"/>
</paths>

Now define a provider in your ApplicationManifest.xml, add this provider inside application node:

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="<your provider authority>" //com.domainname.appname.fileprovider
    android:exported="false"
    android:grantUriPermissions="true">
  <meta-data
      android:name="android.support.FILE_PROVIDER_PATHS"
      android:resource="@xml/file_provider_paths"/>
</provider>

Now get the shared file URI, and use it in your application where you need it.

Uri sharedFileUri = FileProvider.getUriForFile(this, <your provider auhtority>, sharedFile);

以上是关于MediaPlayer: Couldn't open /storage/emulated/0/kgmusic/download/独家记忆.mp3: java.io.FileNotFoundEx的主要内容,如果未能解决你的问题,请参考以下文章

quartz报错 Couldn't retrieve job because the BLOB couldn't be deserialized: null

[tomcat] couldn't get host name 解决

Couldn't resolve host 'mirrorlist.centos.org'解决办法

CentOS Couldn't resolve host 'apt.sw.be'

mysqldump: Couldn't execute 'SAVEPOINT sp':

iOS开发—— Couldn't add the Keychain Item