java - 尝试通过 MediaStore.createDeleteRequest(getContentResolver(), uris) 为 Android R (API 30) 创建删除请求以进行范围存储

标签 java android

尝试使用分区存储以 Android R (API 30) 为目标。我让图像选择器打开媒体库以允许用户使用以下方式选择 1 个或多个图像:

new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

我得到了 Uris 的列表,例如

content://com.android.providers.media.documents/document/image%3A189
content://com.android.providers.media.documents/document/image%3A190

然后我尝试生成请求删除权限的 Intent :

PendingIntent intent = MediaStore.createDeleteRequest(getContentResolver(), uris);

但这会抛出异常:

java.lang.IllegalArgumentException: All requested items must be referenced by specific ID
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:172)
    at android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:142)
    at android.content.ContentProviderProxy.call(ContentProviderNative.java:732)
    at android.content.ContentResolver.call(ContentResolver.java:2405)
    at android.provider.MediaStore.createRequest(MediaStore.java:822)
    at android.provider.MediaStore.createDeleteRequest(MediaStore.java:985)
    ...

如何将 Uris 转换为 MediaStore.createDeleteRequest 所需的特殊格式?

最佳答案

最后,我通过从返回的 URI 中提取媒体编号然后使用以下命令重新生成了 URI:

ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Long.parseLong(num));

创建 MediaStore API 所需的 URI。图像选择器没有返回其他媒体服务期望的 URI,这似乎很奇怪。

关于java - 尝试通过 MediaStore.createDeleteRequest(getContentResolver(), uris) 为 Android R (API 30) 创建删除请求以进行范围存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65229111/

相关文章:

java - Hibernate 和 JPA "mappedBy"与关系和级联的所有者

java - 读取大文件到数组 java.lang.OutOfMemoryError : Java heap space

java - 如何将空格替换为 nbsp?

java - 屏幕卡住直到函数返回

带有 inputType 和 Enter 按钮的 Android EditText

java - 我想从命令提示符编写我的java程序(没有netbeans,没有记事本)

java - Android:不可转换的类型;无法将 android.preference.Preference 转换为 androidx.preference.SeekBarPreference

android - Android 的 bluez 和服务/特性缓存问题

android - 有什么方法可以绑定(bind)动态壁纸服务吗?

android - 如何在android中获取水平Listview位置变量?