2013-06-20 51 views
2

我正在使用以下代碼從圖庫中獲取文件。我檢索的文件是基於用戶選擇的圖像文件,視頻文件或音頻文件。如何確定文件是圖像,視頻還是音頻文件

現在我在列表視圖中顯示從庫中檢索的文件。但我無法區分用戶選擇的文件是圖像文件(即.jpg/.png)還是其視頻文件或音頻文件。

通過獲取擴展名並在if else條件中檢查它是否可能我知道。但我想知道它的存在,這樣做

代碼用於從畫廊獲得圖像的任何可能的方式是

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
startActivityForResult(intent, GET_VIDEO_AUDIO);  
          fileTransferDialog.dismiss(); 

回答

6

只是檢查MIME類型的文件。 看一看這個

https://stackoverflow.com/a/13889946/1570662

這可能有助於

private static String getMimeType(String fileUrl) { 
    String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl); 
    return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 
} 
+0

好的通過獲得礦山類型。問題解決了,但是有一些問題。就像在我的設備中假設我有.mp4文件和.flv視頻文件。現在對於mp4文件,mine類型的返回值是video ..但是對於flv文件,mine類型總是返回null。 – Rahul

+0

如果使用''/sdcard/path/to/video.extension'''等本地文件路徑進行嘗試,這也是有效的。問題是如果本地文件的路徑中包含空格,則它總是返回空格 – nmxprime

0

看看this。通過確定文件的MIME類型,您可以評估您正在處理的文件。還有this one,可用於確定MIME類型等。

0

您可以獲取文件的類型以識別文件類型是照片還是視頻。

 String ext = file.getName().substring(file.getName().indexOf(".") + 1); 

      if (ext.equalsIgnoreCase("jpg") 
         || ext.equalsIgnoreCase("png") 
         || ext.equalsIgnoreCase("jpeg")) { 
        type = "photo"; 
      } 
+0

此方法效率低下,因爲文件擴展名太多;幾乎不可能迎合所有人。 – Taslim

相關問題