Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在本机Android文件选择器中按mimetype或扩展名筛选_Java_Android_Android Intent_Mime Types_Filepicker - Fatal编程技术网

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文档中按扩展名筛选
  • 向android注册一个新的mime类型,以便它可以与
    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:在这一点上,我认为你做不到。它是由系统自动授予的。别担心。:-)