2013-04-22 11 views
5

Używam intencji, aby użytkownik mógł wybrać plik, a po jego wykonaniu chcę się dowiedzieć, jaki typ pliku jest wybrany.ACTION_GET_CONTENT: Jak uzyskać zakończenie pliku przy wyszukiwaniu wielu typów plików?

Intencją:

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

W moim onActivityResult chcę wyodrębnić ścieżkę z zamiarem poprzez intent.getData() i wszystkich jego "submethods" (getScheme(), getLastPathSegment() itp). Jednak otrzymuję tylko Uri dla wybranego pliku.

Przykład 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 

Widziałem rozwiązań, jak uzyskać bezwzględną ścieżkę, gdy użytkownik jest dozwolone tylko do wyboru zdjęć lub audio. Ale w jaki sposób mogę uzyskać absolutePath (rzeczywistą ścieżkę z nazwą i zakończeniem pliku, np. MyPicture.jpeg), jeśli chcę zezwolić użytkownikowi na wybór różnych typów plików?

Kod Byłem twiggling z postarać się o-nazwę ścieżki w onActivityResult (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); 

Odpowiedz

4

Przez plików kończąc Ja zakładając oznacza rozszerzenie pliku? (tj mp4)

Jeśli więc można użyć ContentResolver uzyskać typ MIME:

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

to da ci MIME zakładając, że mieszczą się w MediaStore, które powinny, jeśli masz zawartość Uri. tak dostaniesz coś jak „image/png”, „video/mp4” itp

Następnie można użyć MimeTypeMap aby uzyskać rozszerzenie pliku z MIME:

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

pamiętać, że powinien nigdy nie podłańcucha typu MIME po "/", aby uzyskać rozszerzenie, ponieważ niektóre typy MIME nie używają jego rozszerzenia, takie jak pliki ".mov", które mają typ MIME "video/Quicktime"

Powiązane problemy