为何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" />
现象描述
此时会弹出系统对话框,点击「允许」后:

- 设备内部存储的文件可正常处理:文件被重命名为
.trashed_<expire_timestamp>_<original_Filename>,MediaStore的IS_TRASHED字段被标记为1,MediaStore版本号也会增加。 - SD卡中的文件无变化:对话框正常弹出且点击「允许」后,文件名保持原样,MediaStore记录的
IS_TRASHED字段仍为0,无异常抛出,但MediaStore版本号确实增加。
请问我是否遗漏了什么配置或步骤?
内容的提问来源于stack exchange,提问作者how8570
相关产品推荐
相关产品推荐

