2015-09-04 49 views
2

我試圖獲取存儲在下載中的mp3的mimetype。問題是,mimetype總是返回null。我不確定爲什麼。請注意,使擴展名小寫(.mp3)沒有區別。Android應用程序Mp3文件mimetype解析爲零

String filePath = "/storage/emulated/0/Download/song.MP3"; 

File file = new File(filePath); 
Uri uri2 = Uri.fromFile(file); 

//will display /storage/emulated/0/Download/song.MP3 
Log.d("file type as string",file.toString()); 

//will display file:///storage/emulated/0/Download/song.MP3 
Log.d("uri type as string",uri2.toString()); 


ContentResolver cR = getApplicationContext().getContentResolver(); 
String mime = cR.getType(uri2); 

//mime is null always displays 
if(mime == null){ 
    Log.d("result", "mime is null"); 
} else{ 
    Log.d("mime", mime); 
} 

String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(filePath); 
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 


System.out.println("extension:" +extension); //displays MP3 
System.out.println("mimetype:" + mimetype); //displays null 

回答

3

請檢查以下一段代碼。你會知道你爲什麼沒有得到所需的輸出。

String type = null; 
    String extension = "mp3"; 

    type = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 

    Log.d(TAG,"mime type1 "+type); 

    extension = "MP3"; 

    type = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 

    Log.d(TAG,"mime type2 "+type); 

如果你不能夠使基於使得以小寫的文件擴展名的任何區別,可以考慮使用

File filesDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS); 
    File mov = new File(filesDir,"song.mp3"); 

和使用文件的絕對路徑,而不是硬編碼路徑構造URI。