问题描述
我无法更新音频文件的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 (将#修改为@)