Android Q保存媒体文件未在Gallary中显示

问题描述 投票:1回答:1

我正在使用三星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 player

是否有任何通知通知已添加文件

或android 10 bug?

android kotlin android-contentprovider android-10.0 android-mediascanner
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.