如何使用范围存储更新Android 11中的Mediastore?

问题描述

我无法更新音频文件的MediaStore列,例如标题,专辑,歌曲的艺术家,尽管我使用MediaStore.createWriteRequest()和用户授权请求uri权限。当我执行ContentResolver.update时,noOfRowsUpdate为1,但未应用任何更改。

private fun requestWritePermission(uri: Uri){
    if (VERSION.SDK_INT >= VERSION_CODES.R) {
        val uriList = mutableListOf<Uri>(uri)
        val pi = MediaStore.createWriteRequest(contentResolver,uriList)
        try {
            startIntentSenderForResult(
                pi.intentSender,REQUEST_PERM_WRITE,null,0
            )
        } catch (e: SendIntentException) {
        }
    }
}

override fun onActivityResult(requestCode: Int,resultCode: Int,intentData: Intent?) {

  if(requestCode == REQUEST_PERM_WRITE && resultCode == Activity.RESULT_OK){
      updateAudioTags
  }

  super.onActivityResult(requestCode,resultCode,intentData)
}

private fun updateAudioTags() {
    val uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,trackId)

    val contentValues = ContentValues()

    if (hasQ()) {
        contentValues.put(MediaStore.Audio.Media.IS_PENDING,1)
        application.contentResolver.update(uri,contentValues,null)
    }

    contentValues.clear()

    if (hasQ()) contentValues.put(MediaStore.Audio.Media.IS_PENDING,0)

    contentValues.put(MediaStore.Audio.Media.TITLE,"New title")
    contentValues.put(MediaStore.Audio.Media.ALBUM,"New album")
    contentValues.put(MediaStore.Audio.Media.ARTIST,"New artist")

    val rowsUpdated = application.contentResolver.update(uri,null)

    Log.i(TAG,"updateAudioTags() :: no of rowsUpdated : $rowsUpdated")
}

(在Google问题跟踪器中已针对同一问题提出了问题-https://issuetracker.google.com/issues/173134422

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...