如何删除刚在android程序中拍摄的照片

问题描述 投票:2回答:3

我已经编写了一个程序,该程序使用Intent进行图像捕获以使用手机中的应用程序获取照片。使用MediaStore.EXTRA_OUTPUT,我获得了图像的URI,将其转换为路径会导致类似“ / external / images / media / NN”,其中NN是照片编号。

现在,在我的程序中,我读取并处理了图像后,想要删除该图像。

我应该怎么做?

(File image = new File(path); image.delete(); // returns false, so doesn't work)
android file camera delete-file
3个回答
1
投票

感谢您的回答。

我决定阅读此答案,Problems saving a photo to a file

对我来说,它适用于Hero,即使在这段代码的注释中说出Hero的行为也不同。现在,我在“ /sdcard/image.tmp”中获取了图像,并且可以将其删除。我认为这是最好的解决方案,因为我认为尝试将相机应用程序写入我的应用程序目录中很麻烦。

再次感谢。


0
投票

是否有可能无法在您的应用程序中请求WRITE_EXTERNAL_STORAGE权限?这将导致删除失败。 (由于相机是具有自己权限的单独应用,因此无论如何相机都可以写。)

[也有可能(但不太可能)媒体文件夹只能由相机应用程序写入,在这种情况下,您希望在EXTRA_OUTPUT中指定其他所需的目的地,而不是调用相机的意图,以便文件将被写入您应用的目录。实际上,即使您打算立即删除私有资源,您也可能无论如何都要这样做,以避免使私有资源弄乱全局空间。


0
投票

下面的代码不仅删除图像文件,还删除删除图像时留下的0Byte文件。我在Android 10中观察到此0Byte鬼文件行为。

    val fileToDelete = File(photoUri.path)
    if (fileToDelete.exists()) {
        if (fileToDelete.delete()) {
            if (fileToDelete.exists()) {
                fileToDelete.canonicalFile.delete()
                if (fileToDelete.exists()) {
                    getApplicationContext().deleteFile(fileToDelete.name)
                }
            }
            Log.e("", "File Deleted " + savedPhotoUri.path)
        } else {
            Log.e("", "File not Deleted " + savedPhotoUri.path)
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.