2014-12-10 3 views
3

Мне нужно показать только «pdf» файлы в моем приложении, когда я запускаю по умолчанию. Выбор файла. Я не могу фильтровать расширения файлов.Выбор файла Android с конкретными расширениями файлов

final Intent getContentIntent = new Intent(Intent.ACTION_GET_CONTENT); 
    getContentIntent.setType("application/pdf"); 
    getContentIntent.addCategory(Intent.CATEGORY_OPENABLE); 

    Intent intent = Intent.createChooser(getContentIntent, "Select a file"); 
    startActivityForResult(intent, REQUEST_PDF_GET); 

File chooser показывает любые файлы. Я хотел бы показать только файлы PDF. Как я могу фильтровать файлы, показанные с помощью File chooser.

ответ

4

Это неизвестное вам, какие пользовательские приложения браузера файлов могут запускаться. Я думаю, что это случай, когда лучше что-то рулить. Мой подход был

а) Найти все файлы с определенным расширением на внешних носителях с чем-то вроде (я искал .saf расширения, так что вы хотите изменить в формате .pdf соответственно):

public ArrayList<String> findSAFs(File dir, ArrayList<String> matchingSAFFileNames) { 
    String safPattern = ".saf"; 

    File listFile[] = dir.listFiles(); 

    if (listFile != null) { 
     for (int i = 0; i < listFile.length; i++) { 

      if (listFile[i].isDirectory()) { 
       findSAFs(listFile[i], matchingSAFFileNames); 
      } else { 
       if (listFile[i].getName().endsWith(safPattern)){ 
        matchingSAFFileNames.add(dir.toString() + File.separator + listFile[i].getName()); 
        //System.out.println("Found one! " + dir.toString() + listFile[i].getName()); 
       } 
      } 
     } 
    }  
    //System.out.println("Outgoing size: " + matchingSAFFileNames.size()); 
    return matchingSAFFileNames; 
} 

b) Получите этот результат в ListView и позвольте пользователю коснуться файла, который он/она хочет. Вы можете сделать список таким же привлекательным, как вы хотите - показать эскизы, плюс имя файла и т. Д.

Похоже, что это займет много времени, но это не так, и вы тогда знаете поведение каждого устройства.

+1

Спасибо Джейсон, я собираюсь отметить это как правильный ответ, но я только что разочаровал, как черт-андроид не обеспечивает встроенную функцию такой базовой работы. Я просто хочу, чтобы файлы расширения файлов ... –

+0

Я тоже был удивлен этим и ожидал намерения справиться с этим. Я сталкиваюсь с подобными проблемами, когда хочу представить пользователям изображения и позволить им выбирать мультипликаторы и т. Д. Возможно, кто-то появится здесь с лучшей стратегией. –

Смежные вопросы