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

Android 11调用createDeleteRequest后如何在onActivityResult处理删除逻辑

解决方案

你需要先暂存待删除条目的位置和对应信息,再在onActivityResult中根据用户授权结果执行后续逻辑,具体实现如下:

1. 先定义常量和临时存储变量

在你的Activity/Fragment类中添加以下声明,避免硬编码请求码,同时暂存待删除的信息:

// 自定义删除请求的请求码
private static final int REQUEST_DELETE_VIDEO = 1001;
// 暂存待删除的条目位置
private int mPendingDeletePosition = -1;

2. 修改原有删除逻辑

在触发Android 11+删除请求前,先保存待删除的条目位置:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    // 保存当前要删除的条目位置,后续回调要用
    mPendingDeletePosition = p;
    PendingIntent demande = MediaStore.createDeleteRequest(context.getContentResolver(), fichiers);
    try {
        ((Activity) context).startIntentSenderForResult(demande.getIntentSender(),REQUEST_DELETE_VIDEO,new Intent(), 0,0,0);
    } catch (IntentSender.SendIntentException e) {
        e.printStackTrace();
    }
}

3. 重写onActivityResult处理回调

在宿主Activity/Fragment中重写该方法,根据用户操作结果执行UI和数据更新:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // 匹配删除请求的请求码
    if (requestCode == REQUEST_DELETE_VIDEO) {
        // 用户同意删除
        if (resultCode == RESULT_OK) {
            // 执行原有删除成功后的逻辑
            videoFolder.remove(mPendingDeletePosition);
            notifyItemRemoved(mPendingDeletePosition);
            notifyItemRangeChanged(mPendingDeletePosition, videoFolder.size());
            Snackbar.make(view, "Fichier supprimé avec succès", Snackbar.LENGTH_SHORT).show();
        } 
        // 用户拒绝删除
        else {
            Snackbar.make(view, "Erreur, le fichier n'a pas été supprimé", Snackbar.LENGTH_SHORT).show();
        }
        // 重置临时变量,避免后续复用出现数据错乱
        mPendingDeletePosition = -1;
    }
}

注意事项

  • 如果删除逻辑写在列表Adapter中,建议自定义回调接口将删除操作和结果处理抛给宿主Activity/Fragment实现,不要在Adapter中持有临时变量,避免内存泄漏和数据异常。
  • 重命名逻辑和删除逻辑一致,调用MediaStore.createWriteRequest()获取权限后,同样在onActivityResult中匹配自定义请求码执行后续操作即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 13:15:02