如何从一个来自ACTION_GET_CONTENT Intent的URI中获取文件名?

时间:2017-04-25 15:41:58

标签: java android uri

我使用ACTION_GET_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 String都是这样的:

// audio:9980

虽然我期待的是:

// Walk on the wild side.mp3

我做错了什么?

1 个答案:

答案 0 :(得分:1)

  

我需要获取文件的名称。

它不是文件。它是Uri,就像https://stackoverflow.com/questions/43615264/how-to-get-the-file-name-from-an-uri-got-from-action-get-content-intent是一个URI一样。 how-to-get-the-file-name-from-an-uri-got-from-action-get-content-intent不是文件名。

  

我做错了什么?

您假设ACTION_GET_CONTENT为您提供了一个文件。

欢迎您使用ContentResolver query() OpenableColumnsDISPLAY_NAMEACTION_GET_CONTENT。我在this sample app中证明了这一点。但是,请理解您正在获取显示名称,并且由用户选择处理的应用程序return Response::json(array('element' => View::make('MyView')->render()); 取决于"显示名称"实际上是。 可能是一个文件名,但不一定是。