2015-09-04 2 views
2

Я пытаюсь получить mimetype mp3, хранящегося в Downloads. Проблема в том, что mimetype всегда возвращает null. Я не уверен, почему. Обратите внимание, что расширение в нижнем регистре (.mp3) не имеет значения.Android-файл 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"); 

и построить Ури, используя абсолютный путь к файлу, а не жестко прописывать путь.