Unsupported MIME type in Android 11

Viewed 4177

Getting below issue in Android 11 and it works fine in below 11. While record audio file.

Here is an exception.

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

Code

        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);
2 Answers
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;
}

I used below code for set Ringtone But has error For android 11

ContentValues contentValues = new ContentValues();
        contentValues.put(MediaStore.MediaColumns.DATA, outputfile.getAbsolutePath());
        contentValues.put(MediaStore.MediaColumns.TITLE, "ringtonename");
        contentValues.put(MediaStore.MediaColumns.MIME_TYPE, getMIMEType(ringtone_file.getPath()));
        contentValues.put(MediaStore.MediaColumns.SIZE, outputfile.length());
        contentValues.put(MediaStore.Audio.Media.ARTIST, "ringtonename");
        contentValues.put(MediaStore.Audio.Media.IS_RINGTONE, true);
        contentValues.put(MediaStore.Audio.Media.IS_NOTIFICATION, true);
        contentValues.put(MediaStore.Audio.Media.IS_ALARM, true);
        contentValues.put(MediaStore.Audio.Media.IS_MUSIC, false);
        ContentResolver contentResolver = getContentResolver();
        Uri generalaudiouri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
        contentResolver.delete(generalaudiouri, MediaStore.MediaColumns.DATA + "='" + outputfile.getAbsolutePath() + "'", null);
        Uri ringtoneuri = contentResolver.insert(generalaudiouri, contentValues);
        RingtoneManager.setActualDefaultRingtoneUri(this, RingtoneManager.TYPE_RINGTONE, ringtoneuri);
2021-10-11 14:53:03.037 10319-10319/com.bestappsringtones.ringtonesforandroidfree I/Toast:

show: focusDisplayId = 0, isFocusInDesktop = false mCustomDisplayId=-1 isDexDualMode=false 2021-10-11 14:53:03.037 10319-10319/com.bestappsringtones.ringtonesforandroidfree I/Toast: show: isActivityContext = true 2021-10-11 14:53:03.106 10319-10319/com.bestappsringtones.ringtonesforandroidfree W/RingtoneManager: Failed to open directly; attempting failover: java.io.FileNotFoundException: open failed: ENOENT (No such file or directory) 2021-10-11 14:53:03.114 10319-10319/com.bestappsringtones.ringtonesforandroidfree W/RingtoneManager: Failed to cache ringtone: java.io.IOException: java.lang.SecurityException: Uri is not ringtone, alarm, or notification: content://0@media/external/audio/media/56062 2021-10-11 14:53:03.114 10319-10319/com.bestappsringtones.ringtonesforandroidfree I/RingtoneManager: Save path type :1, URI : content://0@media/external/audio/media/56062 2021-10-11 14:53:03.132 10319-10319/com.bestappsringtones.ringtonesforandroidfree I/RingtoneManager: ringtone path: /storage/emulated/0/Music/1633951383000.oga 2021-10-11 14:53:03.148 10319-10319/com.bestappsringtones.ringtonesforandroidfree D/Toast: show: caller = com.bestappsringtones.ringtonesforandroidfree.SettingActivity

Related