首页 > 解决方案 > Android 11 上 createDeleteRequest() 的 OnActivtyResult

问题描述

不幸的是,Android 11 改变了管理存储权限的方式。

我想做删除和重命名函数并修改我的代码如下:


        private void deleteFile(int p, View view){
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setTitle("Supprimer ?").setMessage(videoFolder.get(p).getTitle()).setNegativeButton("Annuler", (dialog, which) -> {
    
                }).setPositiveButton("Oui", (dialog, which) -> {
                    ArrayList<Uri> fichiers = new ArrayList<>();
                    Uri contentUri = ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, Long.parseLong(videoFolder.get(p).getId()));
                    File file = new File(videoFolder.get(p).getPath());
    
    
                    fichiers.add(contentUri);
                                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
                        PendingIntent demande = MediaStore.createDeleteRequest(context.getContentResolver(), fichiers);
                        try {
                            ((Activity) context).startIntentSenderForResult(demande.getIntentSender(),1,new Intent(), 0,0,0);
                        } catch (IntentSender.SendIntentException e) {
                            e.printStackTrace();
                        }
    
                    }else {
    
    
                    boolean deleted = file.delete();
                        if (deleted){
                            context.getApplicationContext().getContentResolver().delete(contentUri, null, null);
                            videoFolder.remove(p);
                            notifyItemRemoved(p);
                            notifyItemRangeChanged(p,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();
                        }
    }
                }).show();
            }

但我不知道如何onActivityResult才能做到这file.delete()一点。

有人能帮我吗?谢谢

标签: javaandroidonactivityresult

解决方案


推荐阅读