android – ACTION_GET_CONTENT:搜索多种文件类型时如何获取文件结尾?

我使用Intent让用户选择一个文件,在用户完成之后我想知道所选文件是什么类型的文件类型.

意图:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");

在我的onActivityResult中,我想通过intent.getData()和它的所有“submethods”(getScheme(),getLastPathSegment()等)从intent中提取路径.但是,我只获取所选文件的Uri.

Uris’的例子:

Uri: content://media/external/audio/media/15185 //This is an audiofile
Uri: content://media/external/audio/media/20 //Another audiofile
Uri: content://media/external/images/media/20577 //this is a picture
Uri: file:///storage/emulated/0/testWed%20Apr%2017%2011%3A10%3A34%20CEST%202013 //This is a file

我已经看到了当用户只被允许选择图像或音频时如何获得绝对路径解决方案.但是,如果我想允许用户从不同的文件类型中进行选择,我该如何获取absolutePath(具有名称文件结尾的真实路径,例如MyPicture.jpeg)?

代码我一直在试图获取onActivityResult中的路径名(int requestCode,int resultCode)

         String fileName = data.getData().getLastPathSegment().toString();
         System.out.println("Uri: " +data.getData().toString());
         File f = new File(fileName);
         System.out.println("TrYinG wIWThA Da FiLE: " +f.getAbsolutePath());
         System.out.println("FileNAME!!!: "+fileName);
最佳答案
通过文件结尾我假设你的意思是文件扩展名? (即mp4)

如果是这样,您可以使用ContentResolver获取mimetype:

String mimeType = getContentResolver().getType(sourceUri);

这将为您提供mimetype,假设它们在MediaStore中,如果您有内容Uri,它们应该是它们.所以你会得到像“image / png”,“video / mp4”等等.

然后你可以使用MimeTypeMap从mimetype获取文件扩展名:

String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType);

请注意,您永远不应该在“/”之后对mimetype进行子字符串以获取扩展名,因为某些mimetype不使用其扩展名,例如“.mov”文件,其中包含mimetype“video / quicktime”

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...