Java 如何从从ACTION\u get\u CONTENT Intent获取的URI中获取文件名?
我使用了一个ACTION\u GET\u CONTENT Intent来让用户从他的库中选择一首歌曲,然后它在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(
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
使用toquery()
,并请求显示名称。我用一个例子来证明这一点。但是,请理解,您将获得一个显示名称,这取决于用户选择处理ACTION\u GET\u CONTENT
什么是“显示名称”。它可能是一个文件名,但不一定是。我在问题中解释错了。我现在就编辑它。我知道我使用的不是文件而是Uri,我知道它们之间的区别。你能把这段代码贴在你得到名字的地方吗?谢谢你这么快answer@Daniele:请参阅我在何处使用游标加载程序
检索OpenableColumns
。