当使用 Android 13 中引入的选择器时,通过 ActivityResultContracts.PickVisualMedia 返回一个 Uri(表示所选媒体项):
content://media/picker/0/com.android.providers.media.photopicker/media/1000000198
如果我使用内容解析器并查询游标,我会得到类似以下的结果:
duration = 38003
orientation = 0
height = 2336
_display_name = 1000000198.mp4
datetaken = 1681826421000
mime_type = video/mp4
_data = /sdcard/.transforms/synthetic/picker/0/com.android.providers.media.photopicker/media/1000000198.mp4
_size = 9920806
width = 1072
通常用于文件名的列是OpenableColumns.DISPLAY_NAME(_display_name)。但是,正如您所看到的,这里的值只是一些垃圾数字文件名,而不是实际选择的文件名。这不是所选视频的实际文件名。
有没有办法使用Android 13照片/视频选择器并获取用户选择的文件的实际文件名,而不是这个垃圾数字文件名?
DocumentFile.fromSingleUri(context, uri).getName()
,但对于这个媒体选择器方案也不起作用。我认为@CommonsWare来解救了。 - blackapps