2012-01-04 6 views
2

주어진 폴더를 열 수있는 모든 응용 프로그램을 나열하는 대화 상자를 여는 방법은 무엇입니까?폴더 열기 - 의도 선택기

나는 코드가 말한다

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory())); 
startActivity(Intent.createChooser(intent, "Open Folder")); 

다음 시도 "어떤 응용 프로그램이 작업을 수행 할 수 없습니다."

내 장치에 기본 파일 탐색기와 AndroidZip 응용 프로그램이 있습니다 (이 응용 프로그램은 폴더를 열 수 있음).

답변

4

"아니요 애플리케이션에서이 작업을 수행 할 수 없습니다."

놀라운 것은 아닙니다. Intent 시스템에는 "폴더"와 같은 것이 없으므로 "폴더"를 열지 않습니다. 파일 확장자가없고 MIME 유형이없는 경로를 열 수있는 응용 프로그램을 찾으려고합니다. 파일 확장자가없고 MIME 유형이없는 경로에서 ACTION_GET_CONTENT을 지원하는 활동에 <intent-filter>이있는 응용 프로그램이 장치에 설치되어 있지 않습니다.

ACTION_VIEW을 시도해보십시오. 그러나 안드로이드 기기 중 90 % 이상이 "폴더"를 다루는 방법이 없을 것이라는 점을 명심하십시오.

+0

감사합니다. 당신은 정말로 프로이고 다른 사람들에게 프로보다 친절합니다. – herbertD

+0

한 가지 간단한 질문입니다. 어떻게 폴더를 탐색 할 수 있습니까?폴더에 mp3 파일이 모두 들어 있다고 가정 해보십시오. –

+0

@Aashish : 내 대답을 읽으면,'Intent' 시스템에 "폴더"같은 것이 없습니다. – CommonsWare

2

여기에서보십시오. 나를 위해 일합니다. 디렉토리에있는 파일은 표준 MIME 타입을 갖고있는 것 같다하지 않기 때문에

public void openFolder() 
{ 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() 
    + "/yourFolder/"); 
intent.setDataAndType(uri, "*/*"); 
startActivity(Intent.createChooser(intent, "Open folder")); 
} 

here

1

참조, 나는 MIME 형식없이 의도를 필터링 내 파일 탐색기를 코딩. 데이터를 폴더의 Uri로 설정하면됩니다.

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setData(uri); 
startActivity(intent); 

이 의도는 응용 프로그램 다음 실행됩니다 :

http://play.google.com/store/apps/details?id=com.organicsystemsllc.thumbdrive

난이도 잘 파일 또는 폴더 확장에 따라 중 하나를 엽니 다하기 위해 노력하고 찾을 수 있습니다. 폴더의 uri에 대한 파일 확장명과 MIME 유형이 아래 코드 스 니펫에서 null이됩니다. 이 작업은 여전히 ​​스키마 '파일'을 필터링하지만 특정 mime 유형 (예 : 엄지 드라이브)은 필터링하지 않는 활동과 일치하도록 작동합니다. 이 방법은 uri가 디렉토리 일 때 모든 파일 MIME 유형을 필터링하는 활동을 찾지 않습니다.

//Get file extension and mime type 
Uri selectedUri = Uri.fromFile(file.getAbsoluteFile()); 
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString()); 
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension); 

//Start Activity to view the selected file 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(selectedUri, mimeType); 
startActivity(Intent.createChooser(intent, "Open File...")); 
1

의미가 있습니다 : @CommonsWare 말했듯이

Uri selectedUri = Uri.parse(Environment.getExternalStorageDirectory() + "/myFolder/"); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(selectedUri, "resource/folder"); 
startActivity(intent); 

이 좋은 codding :

+1

코드가 제대로 작동하지 않았습니다. 폴더를 여는 대신 활동을 찾을 수 없음 예외가 발생합니다. – dira

+1

기기에 탐색기 앱이 설치되어 있지 않은 것 같습니다. 확인해주세요. –

+0

@Sa Qada Default File Manager로 열 수 있습니까? 기본 파일 관리자에 의도 필터 ACTION_VIEW가 있습니까? –

0

불행하게도을 가지고, (주 안드로이드 시스템에서 "파일 탐색기"의 표준 정의가 존재 나던 타사 '파일 탐색기'를 설치하지 않은 경우).
그 이유는 "resource/folder" 기본적으로 마임 유형이 작동하지 않습니다.

발견 된 최대 수 : https://stackoverflow.com/a/41614535/2377343