Android 11中不受支持的MIME类型

问题描述

在Android 11中遇到以下问题,在11以下可以正常工作。在录制音频文件时。

这是一个例外。

java.lang.IllegalArgumentException: Unsupported MIME type "audio/wav"

代码

        File outFile = new File(outPath);
        long fileSize = outFile.length();

        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaColumns.DATA,outPath);
        values.put(MediaStore.MediaColumns.TITLE,title.toString());
        values.put(MediaStore.MediaColumns.SIZE,fileSize);
        values.put(MediaStore.MediaColumns.MIME_TYPE,"audio/wav");

        values.put(MediaStore.Audio.Media.ARTIST,getApplicationInfo().name);
        values.put(MediaStore.Audio.Media.DURATION,duration);

        values.put(MediaStore.Audio.Media.IS_MUSIC,true);

        Uri uri = MediaStore.Audio.Media.getContentUriForPath(outPath);
        final Uri newUri = getContentResolver().insert(uri,values);

解决方法

import android.webkit.MimeTypeMap;

// url = file path or suitable URL.
public static String getMIMEType(String url) {
    String mType = null;
    String mExtension = MimeTypeMap.getFileExtensionFromUrl(url);
    if (mExtension != null) {
        mType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(mExtension);
    }
    return mType;
}