如何确定一个文件是图片、视频还是音频文件

5
我正在使用以下代码从图库获取文件。根据用户选择,我检索到的文件可以是图像文件、视频文件或音频文件。
现在,我正在将从图库检索到的文件显示在列表视图中。但我无法区分用户选择的文件是图像文件(即 .jpg / .png),还是视频文件或音频文件。
通过获取扩展名并在if else条件中进行检查,可以知道文件类型。但我想知道是否有可能以其他方式实现。
用于从图库获取图像的代码如下:
Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
startActivityForResult(intent, GET_VIDEO_AUDIO);    
                            fileTransferDialog.dismiss();
3个回答

12

只需检查文件的 MIME 类型。

看一下这个链接:

https://dev59.com/y3VD5IYBdhLWcg3wNYxZ#13889946

这可能会有所帮助。

private static String getMimeType(String fileUrl) {
    String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl);
    return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
}

通过获取媒体类型,问题已经解决了。但是还存在一些问题。比如说,在我的设备上有一个.mp4文件和一个.flv视频文件。现在对于mp4文件,媒体类型返回的是video,但是对于flv文件,媒体类型总是返回null。 - Rahul
如果使用本地文件路径(例如"/sdcard/path/to/video.extension"),这也可以工作。问题是,如果本地文件路径中包含空格,则始终返回null。 - nmxprime

0

您可以获取文件类型以识别文件类型是照片还是视频。

        String ext = file.getName().substring(file.getName().indexOf(".") + 1);

            if (ext.equalsIgnoreCase("jpg")
                        || ext.equalsIgnoreCase("png")
                        || ext.equalsIgnoreCase("jpeg")) {
                  type = "photo";
            }

2
这种方法效率低下,因为存在太多的文件扩展名,几乎不可能考虑到它们全部。 - Taslim Oseni

0
看一下this。通過確定文件的MIME類型,您可以評估正在處理的文件是什麼類型。還有this one,它可以用於確定MIME類型等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接