2017-09-15 14 views
1

사용자가 내 응용 프로그램의 로컬 저장소에서 파일을 선택하도록해야합니다. 지금은 사용자가 파일을 선택할 수 있도록 INTENT.ACTION_GET_CONTENT을 사용하고 있지만 클라우드에서 URI를 선택할 수도 있습니다. URI 파일을 얻은 후에는이를 로컬 파일로 취급하고 파일 확장명 추출과 같은 다양한 작업을 수행합니다. 사용자가 로컬 파일 만 선택할 수있게하려면 어떻게해야합니까?사용자가 Android에서 인 텐트를 사용하여 로컬 파일 만 선택하도록하는 방법은 무엇입니까?

else if(menuItem.getItemId() == R.id.action_import_from_file){ 
    Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
    i.setType("*/*"); 
    startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
} 

답변

2

Intent.EXTRA_LOCAL_ONLY를 사용하여 보시기 바랍니다 코드를 아래와 같이 MIME 유형의 배열을 사용할 수 있습니다

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
i.setType("application/pdf|application/x-excel|text/csv"); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 

사용자가 선택하는 어떤 파일 유형을 지정 like
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
갤러리 앱 장치에서 지원하는 경우 로컬 저장소에있는 파일 만 표시됩니다. 갤러리 앱이 위의 의도를 지원하지 않으면 갤러리 앱에서 반환 된 파일 경로의 파일 길이를 확인한 후 사용자에게 오류 메시지를 표시 할 수 있습니다.

1

이 사용 setType() 방법을 시도하고 당신은 또한

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
String[] types = {"application/x-excel/*", "application/csv/*",}; 
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
+0

xlsx 및 csv 파일이 응용 프로그램에 포함됩니까? Excel 파일, CSV 파일 등에서 데이터 세트를 가져오고 있습니다. – ColonD

+0

@ColonD 업데이트 된 Ans를 확인하십시오. –