2013-04-22 1 views
5

사용자가 파일을 선택할 수 있도록 인 텐트를 사용하고 있으며 사용자가이 파일을 선택한 후에 어떤 파일 유형이 적합한 지 알고 싶습니다.ACTION_GET_CONTENT : 여러 파일 형식을 검색 할 때 파일 끝내기를 얻는 방법?

목적 : 내 onActivityResult를에서

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("*/*"); 

내가 intent.getData을 통해 의도에서 경로를 추출 할()와 그것의 모든입니다 "submethods"(getScheme(), getLastPathSegment() 등). 그러나, 나는 선택된 파일에 대해서만 Uri를 얻는다. '의 URI

예 :

Uri: content://media/external/audio/media/15185 //This is an audiofile 
Uri: content://media/external/audio/media/20 //Another audiofile 
Uri: content://media/external/images/media/20577 //this is a picture 
Uri: file:///storage/emulated/0/testWed%20Apr%2017%2011%3A10%3A34%20CEST%202013 //This is a file 

나는 사용자가 이미지 만 나 오디오를 선택하도록 허용 할 때 절대 경로를 얻는 방법의 솔루션을 보았다. 하지만 사용자가 다른 파일 형식을 선택할 수 있도록하려면 absolutePath (이름과 파일 끝이있는 실제 경로, 예 : MyPicture.jpeg)를 얻으려면 어떻게해야합니까?

내가하여 onActivityResult에서 경로 이름을 얻기 위해 시도로 twiggling 봤는데 코드 (INT requestCode가, INT의 resultCode 파일 끝으로

  String fileName = data.getData().getLastPathSegment().toString(); 
     System.out.println("Uri: " +data.getData().toString()); 
     File f = new File(fileName); 
     System.out.println("TrYinG wIWThA Da FiLE: " +f.getAbsolutePath()); 
     System.out.println("FileNAME!!!: "+fileName); 

답변

4

난 당신이 파일 확장자를 의미 겠지? (

String mimeType = getContentResolver().getType(sourceUri); 

이 그들이내에 가정 당신에게 마임을 줄 것이다 : 즉 MP4)

경우 그래서 당신은 MIME 유형을 얻기 위해 ContentResolver을 사용할 수 있습니다은 콘텐츠가 Uri 인 경우에 사용해야합니다. 그래서 당신은 등 "이미지/PNG", "비디오/MP4"같은 것을 얻을 것이다

다음

당신이 MIME 형식의 파일 확장명 얻을 MimeTypeMap를 사용할 수 있습니다

String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(mimeType); 

주 당신이해야 확장자를 얻기 위해 "/"다음에 MIME 유형을 부분 문자열로 변환하지 마십시오. 일부 MIME 유형은 MIME 유형이 "video/quicktime"인 ".mov"파일과 같은 확장자를 사용하지 않습니다.