如何uri到SD卡mp3文件

时间:2017-01-08 19:44:47

标签: android path uri android-sdcard sd-card

我正在尝试播放存储在SD卡中的mp3文件。我没有使用模拟器,而是使用带有cyanogenmod 13 android 6.0的三星Galaxy S3。

首先我尝试了

parallaxMultiplier

但是

Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")  让我到/ storage / emulated / 0。

使用手机中的文件管理器,我会看到3个内存存储位置:

  1. 内部存储位于/ storage / emulated / 0中。
  2. sdcard1是 在/ storage / FE97-A11B
  3. 安全存储分开。
  4. 这与我从计算机上看到的不同(仅限sdcard1和内部存储)。

    我无法让它工作所以我把文件" gato.mp3"在内部和sdcard1,我可以检查是否存在。但是

    Environment.getExternalStorageDirectory().getPath()

    它给我路径/storage/emulated/0/gato.mp3,它应该让我到文件,并尝试手动设置路径到/storage/FE97-A11B/gato.mp3,媒体播放器创建使用uri为null,并且找不到文件。 如果我尝试在计算机资源管理器中看到的路径,也一样。

    任何人都知道为什么找不到该文件? 我试过删除" /"在开始时,添加" mnt"看看我是否遗漏了路上的东西,但似乎没有任何效果。

    感谢您的时间!

    我要检查的代码只是一个函数

    Environment.getExternalStorageDirectory().getPath()+"/gato.mp3"

    其中tv1是一个textview,所以我可以看到uri指向的路径。

1 个答案:

答案 0 :(得分:0)

  

我正在尝试播放存储在SD卡中的mp3文件

您无法访问removable storage上的任意文件系统位置。

Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")

组装路径时切勿使用连接。而且,我不确定create(Context, Uri)是否适用于file Uri计划。我建议您使用:

File media=new File(Environment.getExternalStorageDirectory(), "gato.mp3");

然后使用setDataSource(media.getAbsolutePath())。您还需要READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限,这也意味着您需要处理runtime permissions

  

Environment.getExternalStorageDirectory().getPath()让我/storage/emulated/0

这是Android SDK引用external storage的典型路径,您在问题中称为内部存储。 SDK称为内部存储的内容为something else