You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何MediaStore#createTrashRequest无法将SD卡图片移入回收站?

12/17 更新

  • 这是一个Bug,修复版本即将推出。
  • 同时为旧版本提供了临时解决方案。

问题详情

我正在为应用实现回收站功能,允许用户通过该应用移入/恢复文件。

我通过MediaStore#createTrashRequest创建回收站意图,使用ActivityResultLauncher启动,代码如下:

val launcher = registerForActivityResult(ActivityResultContracts.StartIntentSenderForResult()) {
  // ...
}

// this uri from cursor query, hard code here just for the example
val uri = Uri.parse("content://media/external/images/media/1234") 

val deleteIntent = MediaStore.createTrashRequest(contentResolver, listOf(uri), true)

launcher.launch(
    IntentSenderRequest.Builder(deleteIntent.intentSender).build()
)

权限配置

以下是我的AndroidManifest权限配置:

<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_MEDIA" />

现象描述

此时会弹出系统对话框,点击「允许」后:

Android 11 MediaStore操作对话框

  • 设备内部存储的文件可正常处理:文件被重命名为.trashed_<expire_timestamp>_<original_Filename>,MediaStore的IS_TRASHED字段被标记为1,MediaStore版本号也会增加。
  • SD卡中的文件无变化:对话框正常弹出且点击「允许」后,文件名保持原样,MediaStore记录的IS_TRASHED字段仍为0,无异常抛出,但MediaStore版本号确实增加。

请问我是否遗漏了什么配置或步骤?


内容的提问来源于stack exchange,提问作者how8570

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 15:00:04