首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从uri到SD卡mp3文件

如何从uri到SD卡mp3文件
EN

Stack Overflow用户
提问于 2017-01-08 19:44:47
回答 1查看 1.1K关注 0票数 1

我正在尝试播放一个存储在我的mp3中的SDcard文件。我使用的不是仿真器,而是三星Galaxy6.0和cyanogenmod 13,Android6.0。

我第一次试着

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

但是

Environment.getExternalStorageDirectory().getPath()让我访问/存储/模拟/0。

通过手机中的文件管理器,我看到了三个内存存储位置:

  1. 内部存储位于/存储/模拟/0中。
  2. sdcard1在/存储/FE97-A11B
  3. 安全储存分开。

这与我从计算机中看到的不同(只有sdcard1和内部存储)。

我无法使它工作,所以我把文件"gato.mp3“在内部和sdcard1,我可以检查那里。但是有了

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

它为我提供了path /storage/ should /0/gato.mp3,它应该将我带到文件中,并尝试手动将路径设置为/storage/FE97-A11B/gato.mp3,使用uri创建的mediaplayer为null,没有找到任何文件。如果我尝试在计算机资源管理器中看到的路径,也是一样的。

有人知道为什么找不到文件吗?我试着在乞讨时去掉"/“,加上"mnt”,看看我是不是在路上漏掉了什么东西,但似乎没有什么效果。

谢谢您抽时间见我!

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

代码语言:javascript
复制
public void ejecutar(View v) {

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

    MediaPlayer mp = MediaPlayer.create(this, datos);

    if (mp != null) {
        mp.start();
    }
    else{ tv1.setText(datos.toString());}

其中tv1是一个文本视图,因此我可以看到uri指向的路径。

EN

回答 1

Stack Overflow用户

发布于 2017-01-08 19:54:29

我正在尝试播放存储在我的mp3中的一个SDcard文件

您不能访问可移动存储器上的任意文件系统位置。

代码语言:javascript
复制
Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/gato.mp3")

在装配路径时,不要使用级联。而且,我不确定create(Context, Uri)是否与file Uri方案一起工作。我建议您使用:

代码语言:javascript
复制
File media=new File(Environment.getExternalStorageDirectory(), "gato.mp3");

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

但是Environment.getExternalStorageDirectory().getPath()把我带到了/storage/emulated/0

这是Android所指的外部存储器的典型路径,您在问题中将其称为内部存储。SDK所指的内部存储是一些其他的东西

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41537058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档