安卓Q保存媒体文件没有显示在Gallary



我使用的是三星a51。API 10级

我正在下载文件夹中保存不同类型的文件,如图像、视频、歌曲、zip

代码

val filename = "exampleFileName.jpg"
val now = System.currentTimeMillis() / 1000
val values = ContentValues().apply {
put(MediaStore.Downloads.DATE_ADDED, now)
put(MediaStore.Downloads.DATE_MODIFIED, now)
put(MediaStore.Downloads.DISPLAY_NAME, filename)
put(MediaStore.Downloads.TITLE, filename.stripExtension())
put(MediaStore.Downloads.SIZE, contentSize)
put(MediaStore.Downloads.RELATIVE_PATH, "Download/my-appname")
put(MediaStore.Downloads.IS_PENDING, 1)
}
val uri: Uri? = null
waitForExecution(handler) {
uri = resolver.insert(
MediaStore.Downloads.getContentUri(volume),
values
)
}
val descriptor = resolver.openFileDescriptor(uri!!, "w")
if (descriptor != null) {
val outputStream = FileOutputStream(descriptor.fileDescriptor)
val written = writeFile(outputStream)
if(written){
values.clear()
values.put(MediaStore.Downloads.IS_PENDING, 0)
if(mimeType != null) values.put(MediaStore.Downloads.CONTENT_TYPE, mimeType)
waitForExecution(handler) { // ui thread
resolver.update(uri!!, values, null, null)
// android says that content resolver automatically notify to system don't need to send brodcast.
val intent = Intent(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE))
context.sendBroadcast(intent)
}
}else{
dontThrow { resolver.delete(uri!!, null, null) }
}
} else {
v("got null descriptor.")
}

一切正常文件写入成功。文件显示在文件管理器

但问题不在画廊里。并且在其他一些移动设备中也不工作

它也显示在Mx播放器

有没有通知文件已添加

还是android 10 bug?

插入时通过设置mimeType解决的问题

最新更新