Android Q 保存媒体文件不显示在图库中
Android Q saving media files not showing in 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 个错误?
插入时设置 mimeType 解决了问题
我用的是三星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 个错误?
插入时设置 mimeType 解决了问题