2013-04-22 94 views
5

我正在使用一個Intent來讓用戶選擇一個文件,並且在用戶完成之後,我想知道所選文件是什麼類型的文件類型。ACTION_GET_CONTENT:如何在搜索多個文件類型時獲取文件結尾?

的意圖:

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

在我onActivityResult我想通過intent.getData從意圖解壓路徑()和它的所有 「子方法」(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)?

我一直在twiggling嘗試在onActivityResult獲得路徑名的代碼(INT requestCode,詮釋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

通過文件的結尾我假設你的意思是文件擴展名?(即MP4)

如果是這樣,你可以使用ContentResolver得到MIME類型:

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

這會給你的MIME類型假設他們是內如果您有內容Uri,他們應該這樣做。所以你會看到類似「圖像/ PNG」,「視頻/ MP4」等

然後你可以使用MimeTypeMap來從MIME類型文件的擴展名:

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

注意,你應該從不串「/」後的MIME類型爲MIME類型的一些不使用它的擴展名,例如它有MIME類型‘視頻/ QuickTime的’

「.MOV」文件,以獲得延期