zoukankan      html  css  js  c++  java
  • MediaPlayer: Couldn't open /storage/emulated/0/kgmusic/download/独家记忆.mp3: java.io.FileNotFoundExcept

    写了一个音乐播放器,播放的时候,会出现这样的问题:比如说我点击第三首歌曲,结果没有播放第三首歌曲,而直接播放了第四首歌曲。看了一下日志。发现报错: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);
    
  • 相关阅读:
    Ubuntu下安装git
    curl: (48) An unknown option was passed in to libcurl怎么解决
    python中如何删除列表中的所有元素
    北京游园有感
    keras 实现人工神经网络
    scikit-learn实现简单的决策树
    angularjs实战
    Ajax实战(原生)
    7.DockerCompose 搭建 Redis
    使用element中的el-upload获取本地文件并转为base64码实现预览
  • 原文地址:https://www.cnblogs.com/exmyth/p/8424423.html
Copyright © 2011-2022 走看看