2014-12-10 8 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); 

파일 선택기는 모든 종류의 파일을 보여줍니다. pdf 파일 만 표시하고 싶습니다. File chooser가 보여준 파일들을 어떻게 필터링 할 수 있습니까?

답변

4

의도가 사용자가 설치 한 파일 브라우저 응용 프로그램을 알 수 없습니다. 나는 이것이 무언가를 손으로하는 것이 더 나은 경우가 있다고 생각한다.

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; 
} 
: 내 접근 방식은

A)) (필자는 .saf 확장을 찾고 있었다 같은 외부 미디어에 특정 확장자를 가진 모든 파일을 찾기 때문에 그에 따라 .PDF에 대한 변경 것이었다

b) 결과를 ListView으로 가져와 사용자가 원하는 파일을 터치하도록합니다. 섬네일과 파일명 등을 원하는대로 꾸밀 수 있습니다.

오랜 시간이 걸리지 만 모든 장치의 동작을 알 수 있습니다.

+1

고맙습니다. 제이슨, 저는 이것을 정답으로 표시 하겠지만, 안드로이드가 기본 작업과 같은 내장 기능을 제공하지 못하는 것에 실망했습니다. 파일 확장자를 파일링하기를 원합니다 ... –

+0

나도 이것에 놀랐으며 그것을 처리 할 의도를 기대하고있었습니다. 나는 사용자들에게 이미지를 선물하고 배수 등을 선택할 때 비슷한 문제에 직면 해있다. 아마도 누군가 더 나은 전략으로 여기에 나타날 것이다. –

관련 문제