java - Android - Java - MediaStore - 如何使用多个条件的选择

标签 java android android-contentresolver mediastore

我不想从 Android 设备获取所有文档 (Docs) 文件。我将 ContentResolver 与 MediaStore.Files 结合使用来实现这一目标。我可以从一种类型获取所有文件,例如: pdf ,但我想知道如何从多种类型获取文件。

我的代码:

    String selection = MediaStore.Files.FileColumns.MIME_TYPE + "=?" +
            "";
    String[] selectionArgs = new String[] { MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf")};

    ArrayList<MyFile> list  = new ArrayList<MyFile>();

    Uri contentUri  = MediaStore.Files.getContentUri("external");


    String[] columns = {
            MediaStore.Files.FileColumns.MIME_TYPE ,
            MediaStore.Files.FileColumns.MEDIA_TYPE ,
            MediaStore.Files.FileColumns.DATA ,
    };
    String SortOrder = null;


    Cursor cursor = contentR.query(contentUri ,
            columns ,
            selection ,
            selectionArgs ,
            SortOrder);

如何将选择和 selectioArgs 用于多个条件,例如 SQL 中的 OR 、 AND ... SelectionArgs 将包含我正在寻找的所有文件类型: pdf 、 txt 、 doc ...

例如: 选择= MediaStore.Files.FileColumns.MIME_TYPE +“=?” +“或”+MediaStore.Files.FileColumns.MIME_TYPE +“=?” ;

SelectionArgs = {"pdf", "txt"};

感谢您的帮助或指导:-)

最佳答案

您只需要添加更多的选择参数,每个参数对应每种文件类型。或者您只需创建一个列表或数组,其中包含所有文件类型作为字符串。接下来,您只需要一个循环,转到下一个文件类型,直到没有剩余的文件类型。 例如:

ArrayList<MyFile> list  = new ArrayList<MyFile>();
ArrayList<String> fileTypeArray = new ArrayList<DString>(); 

for(int i = 0; i < fileTypeArray.size(); i++){
     String selection = MediaStore.Files.FileColumns.MIME_TYPE + "=?" + "";
     String[] selectionArgs = new String[] {     MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileTypeArray.get(i))};

    Uri contentUri  = MediaStore.Files.getContentUri("external");
    String[] columns = {
            MediaStore.Files.FileColumns.MIME_TYPE ,
            MediaStore.Files.FileColumns.MEDIA_TYPE ,
            MediaStore.Files.FileColumns.DATA ,
    };
    String SortOrder = null;

     Cursor cursor = contentR.query(contentUri ,
            columns ,
            selection ,
            selectionArgs ,
            SortOrder);
}

关于java - Android - Java - MediaStore - 如何使用多个条件的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35230755/

相关文章:

android - 仅显示一定数量的联系人

android - 使用服务获取 CallLog 上的最后一次通话

java - XML 转换为 CSV

java - 在 CPU 指令管道模拟器中管理 Java 线程

android - Broadcast Receiver问题,注册一个Broadcast Receiver

java - 使用 Java 创建 Android 应用程序很困难

Android服务启动10秒后被杀死

java - 如何替换已经有一些 View 的fragment?

java - 如何过滤我的文本以便将空格考虑在内?

android - 如何从 Android 收件箱中删除多条消息或单条消息?