Android 当我卸载我的应用程序时,我们可以删除通过我的应用程序创建的文件夹吗?

Android 当我卸载我的应用程序时,我们可以删除通过我的应用程序创建的文件夹吗?,android,Android,我面临的问题是,当我卸载SD卡路径中仍然可用的应用程序文件夹时 我应该如何删除它 请建议一些事情让它发生 我应该如何删除它 对外部存储(“SD卡”)上的文件使用getExternalFilesDir()和/或getExternalCacheDir()。卸载应用程序时,这些目录将自动删除 除此之外,其他一切都不可能,因为当您的应用程序被删除时,您无法获得控制权。一些读数: 如果您使用的是API级别8或更高版本,请使用getExternalFilesDir()打开一个文件,该文件表示应保存文件的外部

我面临的问题是,当我卸载SD卡路径中仍然可用的应用程序文件夹时

我应该如何删除它

请建议一些事情让它发生

我应该如何删除它

对外部存储(“SD卡”)上的文件使用
getExternalFilesDir()
和/或
getExternalCacheDir()
。卸载应用程序时,这些目录将自动删除

除此之外,其他一切都不可能,因为当您的应用程序被删除时,您无法获得控制权。

一些读数:

如果您使用的是API级别8或更高版本,请使用getExternalFilesDir()打开一个文件,该文件表示应保存文件的外部存储目录。此方法接受一个类型参数,该参数指定您想要的子目录的类型,例如DIRECTORY_MUSIC和DIRECTORY_RINGTONES(传递null以接收应用程序文件目录的根目录)。如果需要,此方法将创建适当的目录。(……)

如果您使用的是API级别7或更低的版本,请使用getExternalStorageDirectory()打开表示外部存储根目录的文件。然后,应将数据写入以下目录:

/Android/data/“package\u name”/files/

“package_name”是您的Java风格的包名,例如“com.example.android.app”


如果用户的设备运行API级别8或更高版本,并且他们卸载了您的应用程序,则此目录及其所有内容将被删除。

卸载应用程序时,您无法运行代码,因此您必须允许操作系统为您进行清理。这意味着您不能将文件放在SD卡上的任何位置,但必须遵循操作系统的规则


因此,与在SD卡上创建自己的目录结构不同,您必须将写入的文件放在调用
getExternalFilesDir()
getExternalCacheDir()
返回的目录中。Android在卸载时会自动删除这些目录的任何内容。

不幸的是,简单地说,答案是:不,你不能。

原因:
  • 您需要广播,以便在卸载应用程序时收听。但是要卸载的应用程序在卸载时不会得到任何广播

  • 如果您在设备的外部存储上创建了任何文件夹,则当用户卸载应用程序时,您无法调用代码

  • 建议和解决办法:
  • 唯一的方法是使用
    getExternalCacheDir()
    ,然后在卸载应用程序时仅自动删除文件夹

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


  • getExternalStorageDirectory()为我提供了如下路径:/mnt/sdcards/myfolder/。。。但当我卸载我的应用程序时,文件夹和数据仍然可用。。。我正在为此应用程序使用最新的API。我编写了一个应用程序,而你却抱怨B不工作。。。。第二行:getExternalFilesDir()不是getExternalStorageDirectory