2016-02-05 9 views
1

Я не могу получить все документы (Документы) с устройства Android. Я использую ContentResolver с MediaStore.Files для достижения этого. Я могу получить все файлы из одного типа, например: pdf, но мне интересно, как получить файлы из числа типов.Android - Java - MediaStore - Как использовать выбор для нескольких условий

Мой код:

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"};

Спасибо за любую помощь или направление :-)

ответ

0

Вам просто нужно добавить больше selectionArgs, каждый для каждого типа файлов. Или вы просто создаете список или массив, который содержит все типы файлов в виде строк. Затем вам понадобится только цикл, который переходит к следующему типу файла, пока его больше не останется. Например:

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); 
}