【问题标题】:Delete Image From Storage从存储中删除图像
【发布时间】:2021-11-04 08:14:07
【问题描述】:

我想从存储中删除一个图像文件,但它返回 false。

我在我的应用中创建,我可以删除它,但是当我重新安装我的应用时,我可以显示它,但我不能删除它

这是我的代码:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
    File file = new File(cartPostalDbs.get(position).getFilePath());
    boolean deleted = file.delete();
    if (deleted) {
        cartPostalDbs.remove(mPos);
        notifyDataSetChanged();
    } else {
        Toast.makeText(context, "Can Not Delete File", Toast.LENGTH_SHORT).show();
    }
}

这是我的文件路径

/storage/emulated/0/Pictures/yadim/1/1558.jpg

我检查了 PERMISSION 并使用此权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />

【问题讨论】:

  • 我在我的应用中创建的,我可以删除它,但是当我重新安装我的应用时,我可以显示它,但我不能删除它
  • 您使用的是 Android 11 设备?
  • 请将您的帖子标题更改为Delete image from storage after reinstall

标签: java android file


【解决方案1】:

这就是你所需要的,它适用于多种情况:

•如果要删除目录(文件夹) •如果您要删除的文件/目录不存在

代码如下:

public void deleteFile(String path) {
    File file = new File(path);

    if (!file.exists()) return;

    if (file.isFile()) {
        file.delete();
        return;
    }

    File[] fileArr = file.listFiles();

    if (fileArr != null) {
        for (File subFile : fileArr) {
            if (subFile.isDirectory()) {
                deleteFile(subFile.getAbsolutePath());
            }

            if (subFile.isFile()) {
                subFile.delete();
            }
        }
    }

    file.delete();
}

用法:

deleteFile(cartPostalDbs.get(position).getFilePath());

您的最终代码应如下所示:

if (ContextCompat.checkSelfPermission(context, 
Manifest.permission.WRITE_EXTERNAL_STORAGE) == 
PackageManager.PERMISSION_GRANTED) {
try {
deleteFile(cartPostalDbs.get(position).getFilePath());
boolean deleted = true;
} catch ( Exception e ) { boolean deleted = false; }
if (deleted) {
    cartPostalDbs.remove(mPos);
    notifyDataSetChanged();
} else {
    Toast.makeText(context, "Can Not Delete File", 
Toast.LENGTH_SHORT).show();
}
}

编辑 1: 如果未授予权限,我尝试编辑代码以请求权限:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
try {
    deleteFile(cartPostalDbs.get(position).getFilePath());
    boolean deleted = true;
} catch ( Exception e ) { boolean deleted = false; }
if (deleted) {
        cartPostalDbs.remove(mPos);
        notifyDataSetChanged();
} else {

    requestPermissions(new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);

}
}

添加 onActivityResult void 以在授予权限时删除文件:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
    super.onActivityResult(requestCode, resultCode, data);
    
    switch (requestCode) {
            case 1000:
            if (resultCode == Activity.RESULT_OK) {
        if (ContextCompat.checkSelfPermission(context, 
        Manifest.permission.WRITE_EXTERNAL_STORAGE) == 
        PackageManager.PERMISSION_GRANTED) {
                try {
                        deleteFile(cartPostalDbs.get(position).getFilePath());
                        boolean deleted = true;
                } catch ( Exception e ) { boolean deleted = false; }
                if (deleted) {
                            cartPostalDbs.remove(mPos);
                            notifyDataSetChanged();
                } else {
                        Toast.makeText(context, "Can Not Delete File", Toast.LENGTH_SHORT).show();
                }
        }
    } else {
        Toast.makeText(context, "Can Not Delete File", Toast.LENGTH_SHORT).show();
    }
            break;
            default:
            break;
    }
}

另外别忘了给AndroidManifest.xml文件添加权限

【讨论】:

  • 你的方法很好,我以前试过,但我仍然不知道为什么它不起作用,谢谢。
  • 抱歉迟到了..请阅读编辑1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-03
  • 2017-08-13
  • 2018-03-15
  • 2021-04-25
  • 2022-01-11
  • 2011-12-15
相关资源
最近更新 更多