Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从从ACTION\u get\u CONTENT Intent获取的URI中获取文件名?_Java_Android_Uri - Fatal编程技术网

Java 如何从从ACTION\u get\u CONTENT Intent获取的URI中获取文件名?

Java 如何从从ACTION\u get\u CONTENT Intent获取的URI中获取文件名?,java,android,uri,Java,Android,Uri,我使用了一个ACTION\u GET\u CONTENT Intent来让用户从他的库中选择一首歌曲,然后它在onActivityResult()方法中作为URI返回 我需要知道这首歌的名字 我试过: Uri song; //got from onActivityResult String songName = song.getLastPathSegment(); 以及: Uri song; //got from onActivityResult File file = new File(

我使用了一个ACTION\u GET\u CONTENT Intent来让用户从他的库中选择一首歌曲,然后它在
onActivityResult()
方法中作为URI返回

我需要知道这首歌的名字

我试过:

Uri song; //got from onActivityResult

String songName = song.getLastPathSegment();
以及:

Uri song; //got from onActivityResult

File file = new File(song.getPath());
String songName = file.getName();
在这两种情况下,
songName
字符串如下所示:

// audio:9980
而我期待的是:

// Walk on the wild side.mp3
我做错了什么

我需要得到文件名

它不是一个文件。它是一个
Uri
,就像
https://stackoverflow.com/questions/43615264/how-to-get-the-file-name-from-an-uri-got-from-action-get-content-intent
是一个URI<代码>如何从“获取内容意图”操作获取的uri获取文件名不是文件名

我做错了什么

您假设
ACTION\u GET\u CONTENT
为您提供一个文件


欢迎您使用
ContentResolver
OpenableColumns
使用
to
query()
,并请求显示名称。我用一个例子来证明这一点。但是,请理解,您将获得一个显示名称,这取决于用户选择处理
ACTION\u GET\u CONTENT
什么是“显示名称”。它可能是一个文件名,但不一定是。

我在问题中解释错了。我现在就编辑它。我知道我使用的不是文件而是Uri,我知道它们之间的区别。你能把这段代码贴在你得到名字的地方吗?谢谢你这么快answer@Daniele:请参阅我在何处使用
游标加载程序
检索
OpenableColumns