App卸载后如何删除文件和文件夹?

Siv*_*iva 2 android android-layout android-fragments android-internal-storage

在我们的应用程序中,我们创建了文件夹并通过我们的应用程序将一些图像存储在内部存储中。我想在用户卸载应用程序时删除这些文件夹和图像。

这是我的代码,以及我当前存储的方式:

public void cropImage(Uri sourceUri, String fileName) 
{
    File myDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
            + File.separator
            + getString(R.string.app_name) + File.separator + getString(R.string.app_name_images) + File.separator);
    if (!myDir.exists()) {
        myDir.mkdirs();
    }
    File outputFile = new File(myDir, fileName);

    UCrop.of(sourceUri, Uri.fromFile(outputFile)).start(this);
}
Run Code Online (Sandbox Code Playgroud)

Sah*_*hil 6

好吧,这似乎无法实现,因为我们没有收到任何有关卸载的回调信息。

我在职业生涯中尝试过:

广播接收器:将无法工作,因为一旦应用程序被卸载,它就不再存在于操作系统上,因此将无法获得广播。

因此,他们无法删除在设备的外部存储上创建的文件夹。

你可以做什么 :

  • 使用 getExternalCacheDir(),那么创建的文件夹会在卸载应用程序时自动删除。

  • 如果您的应用程序目标是 API 级别 8 或更高版本,您可以对外部文件使用 Context#getExternalFilesDir(),这些文件将在卸载时被删除。