在 Android 9 中,即使您将 MediaStore 的 MIME_TYPE 指定为“video/mp4”,将 DISPLAY_NAME 指定为“fileName.mp4”,也会将其保存为 3gp 文件。
在 Android 10 中,它可以正常工作。
如何解决这个问题呢
val contentValues = ContentValues().apply {
put(MediaStore.Video.Media.TITLE, fileName)
put(MediaStore.Video.Media.DISPLAY_NAME, fileName)
put(MediaStore.Video.Media.DATE_ADDED, dateSeconds)
put(MediaStore.Video.Media.DATE_MODIFIED, dateSeconds)
put(MediaStore.Video.Media.MIME_TYPE, "video/mp4")
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
put(MediaStore.Video.Media.IS_PENDING, 1)
}
}
val itemUri = contentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, contentValues)
contentResolver.openOutputStream(itemUri, "w")?.use { os ->
tempFile.inputStream().copyTo(os)
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
contentValues.clear()
contentValues.apply {
put(MediaStore.Video.Media.IS_PENDING, 0)
}
contentResolver.update(itemUri, contentValues, null, null)
}