Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android Q中编辑音乐标题不起作用?_Android_Editor_Android 10.0 - Fatal编程技术网

在Android Q中编辑音乐标题不起作用?

在Android Q中编辑音乐标题不起作用?,android,editor,android-10.0,Android,Editor,Android 10.0,几天前,安卓Q发布了。我有歌曲编辑功能,用于编辑应用程序中的歌曲标题,该应用程序在Android Q下运行良好。但用于更新音乐的相同代码现在不起作用 ContentResolver resolver=getApplicationContext().getContentResolver(); Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; mRowsUpdated = resolver.update(uri, mInserts, Me

几天前,安卓Q发布了。我有歌曲编辑功能,用于编辑应用程序中的歌曲标题,该应用程序在Android Q下运行良好。但用于更新音乐的相同代码现在不起作用


ContentResolver resolver=getApplicationContext().getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
mRowsUpdated = resolver.update(uri, mInserts, MediaStore.Audio.Media._ID + " LIKE \"" + audioId + "\"", null);

这是零。当我在Android Q中搜索更新时,我得到了关于范围存储的信息,但我不认为这是原因。。。。。因为即使关闭它,它在android Q中仍然不起作用。

首先要了解为什么要使用类似的条件? MediaStore ID对于每个记录都是唯一的,因此您不应该使用“Like”,而是:

resolver.update(uri, mInserts, MediaStore.Audio.Media._ID + "=" + audioId, null);
关于作用域存储,您的应用程序只允许更新/删除其拥有的媒体,以便创建。 如果您希望在不受限制的情况下访问全部媒体以更新/删除由其他应用程序创建的媒体,则需要通过向用户请求此类权限,并使用SAF(DocumentFile)API

也就是说,在Android Q中,MediaStore有一个新的列,它定义了谁拥有(创建)这样的媒体,这是一个允许在不需要任何权限的情况下操作文件的列。不允许您更新此类列值,只有操作系统可以更改它。但是,当您或其他应用程序创建文件时,将其过滤掉,并向用户显示一条消息是非常有用的。 还可以考虑如果你的应用程序被卸载并重新安装,这个字段就会被清除,所以你可以有效地减少你创建的任何东西的所有权。 在更新调用中更新0条记录的原因是,您使用的是复合查询(“LIKE\”“+audioId+”\)。 但是,如果您在没有任何条件的情况下针对/更新单个Uri,例如:

// mediaUri is the actual file Uri, so in the MediaStore format: content://media/external/audio/media/<the media id>
resolver.update(mediaUri, mInserts, null, null);
//mediaUri是实际的文件Uri,因此在MediaStore格式中:content://media/external/audio/media/
update(mediaUri,mInserts,null,null);
然后,当尝试使用非自有文件进行操作时,您将获得一个,用于获取系统弹出窗口以请求用户的媒体权限。这样做的缺点是,在Android Q中,只对单个请求有效,因此一次只能处理一个文件,而且只有在下一个Android版本(假定为R)中,才允许批量编辑/删除