Android GET_CONTENT音频文件

时间:2016-03-09 23:06:26

标签: android audio android-intent

我在以下情况中面临一些问题:

LOAD_AUDIO_REQUEST_CODE = 1000;

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");
startActivityForResult(intent, LOAD_AUDIO_REQUEST_CODE);

public void onActivityResult(int requestCode, int resultCode, Intent data) {
     Uri uri = data.getData();
     Log.i(TAG, "uri path : " uri.getPath());
}

onActivityResult数据路径中指示/document/audio:458,但我希望获得类似/storage/emulated/0/Music/music0.mp3的路径。

如何将/document/audio:458转换为/storage/.../music0.mp3

1 个答案:

答案 0 :(得分:1)

  

在onActivityResult数据路径中指示/ document / audio:458。

您收到了content: Uri。这在较新版本的Android上相当正常。 Android的未来版本可能会阻止file: Uri值。

  

如何转换/文档/音频:458到/ storage /..../ music0.mp3

你不是。没有与给定Uri关联的文件。 Uri可能指向:

  • 外部存储设备上的本地文件
  • 其他应用的内部存储上的本地文件
  • 可移动存储上的本地文件
  • 加密且需要动态解密的本地文件
  • 数据库中BLOB列中保存的字节流
  • 首先需要由其他应用下载的内容
  • ......等等

相反,请使用ContentResolver和:

  • openInputStream()读取与内容相关的字节
  • getType()获取与内容关联的MIME类型
  • query()OpenableColumns获取与内容相关联的尺寸和显示名称