簡體   English   中英

嘗試通過 MediaStore.createDeleteRequest(getContentResolver(), uris) 為 Android R (API 30) 為范圍存儲創建刪除請求的異常

[英]Exception trying to create delete request via MediaStore.createDeleteRequest(getContentResolver(), uris) for Android R (API 30) for scoped storage

嘗試使用范圍存儲定位 Android R (API 30)。 我讓圖像選擇器打開媒體庫以允許用戶使用 select 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

然后,我嘗試生成請求刪除權限的意圖:

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,這似乎很奇怪。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM