Java 在本机Android文件选择器中按mimetype或扩展名筛选
在安卓系统中,用户可以使用Java 在本机Android文件选择器中按mimetype或扩展名筛选,java,android,android-intent,mime-types,filepicker,Java,Android,Android Intent,Mime Types,Filepicker,在安卓系统中,用户可以使用ACTION\u OPEN\u文档意图打开本机文件选择器,并选择一个.mp4文件。这是通过使用以下代码将mime类型设置为video/mp4来实现的: public static void pickFile(Context mContext, int REQUEST_CODE) { Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT); intent.addCategory(Int
ACTION\u OPEN\u文档
意图打开本机文件选择器,并选择一个.mp4
文件。这是通过使用以下代码将mime类型设置为video/mp4
来实现的:
public static void pickFile(Context mContext, int REQUEST_CODE) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("video/mp4");
((Activity) mContext).startActivityForResult(intent, REQUEST_CODE);
}
在我的项目中,我想选择一个自定义扩展名文件,其mime类型在android中是未知的,例如.qgs或.dcm文件
为了解决这一问题,我看到了两种我们迄今未能实现的可能性:
ACTION\u OPEN\u文档中按扩展名筛选
ACTION\u OPEN\u文档
Intent一起使用或者,如果不编写自己的文件选取器,是否还有其他方法我错过了?您可以尝试创建一个自定义文件选取器,传递装载存储点,并递归地迭代所有文件类型:
public void scanFiles(File file) {
File[] fileArray = file.listFiles();
for (File f : fileArray){
if (f.isDirectory())
scanFiles(f);
if (f.isFile() && (f.getpath().endswith("..qgs") || //any extensions)) {
//Add to your list
}
}
}
并使用process builder和mount命令调用android中所有装载点的扫描文件,您可以为希望支持的所有装载点添加检查
可以使用“打开文档意图”操作来打开本机文件选择器
这不是一个“文件选择器”。不要求设备上的每个DocumentsProvider
都提供碰巧是文件的文档
我想选择一个自定义扩展名文件,它的mime类型在android的MimeTypeMap中是未知的,例如.qgs或.dcm文件
不要求设备上的每个DocumentsProvider
都使用文件名为其文件的文档。您看到的名称是“显示名称”,而对于某些提供者,它们将是文件名,而对于其他提供者,它们可以是提供者想要的任何内容
这两种选择都可行吗
没有
或者,在没有编写自己的文件选择器的情况下,我是否错过了其他方法
如果你只想要文件,有很多<代码>操作\u打开\u文档用于处理所有可能的文档源(可移动存储、云提供商等),而不仅仅是文件。是否尝试将类型设置为应用程序/dicom?请参阅我尝试将类型设置为
应用程序/dicom
、应用程序/dcm
和x-lml/x-evm
。都没用。@DSlome64我还原了你的编辑,因为他们颠倒了问题。一、 与OP(@Levey)完全一样,我尝试在使用操作\u OPEN\u文档时过滤文件选择器中显示的文件。我不想使用一个基于扩展的意图过滤器,正如我解释的那样,我已经失去连接两天了,只是错过了赏金出口。我怎样才能给这个答案赏金?@mbernasocchi:在这一点上,我认为你做不到。它是由系统自动授予的。别担心。:-)