我面临这个问题,当我卸载我的应用程序文件夹时,SD卡路径中仍然可用,
我应该怎么做才能删除它?
请提出一些建议以实现它...
我应该怎么做才能删除它?
使用getExternalFilesDir()
和/或getExternalCacheDir()
用于外部存储(“sdcard”)上的文件。当您的应用程序被卸载时,这些目录会自动删除。
除此之外,没有其他可能,因为当您的应用程序被删除时您无法控制。
不幸的是,简单来说,答案是:不,你不能。
你需要广播,当你的应用程序被卸载时你可以收听。但是将要卸载的应用程序不会因为它的卸载而得到任何广播。
如果您在设备的外部存储上创建了任何文件夹,则当用户卸载您的应用程序时,您无法调用代码。
唯一的方法是如果您使用getExternalCacheDir()
, 则只有在卸载应用程序时会自动删除文件夹。
如果您的目标是 API 级别 8 或更高,您可以将Context#getExternalFilesDir()
其用于您的外部文件,这些文件将在卸载时被删除。
一些读数:http: //developer.android.com/guide/topics/data/data-storage.html#filesExternal
如果您使用 API 级别 8 或更高版本,请使用 getExternalFilesDir() 打开一个文件,该文件代表您应该保存文件的外部存储目录。此方法接受一个类型参数,该参数指定您想要的子目录的类型,例如 DIRECTORY_MUSIC 和 DIRECTORY_RINGTONES(传递 null 以接收应用程序文件目录的根目录)。如有必要,此方法将创建适当的目录。(...)
如果您使用 API 级别 7 或更低版本,请使用 getExternalStorageDirectory() 打开代表外部存储根目录的文件。然后,您应该将数据写入以下目录:
/Android/data/"package_name"/files/
“package_name”是您的 Java 风格的包名称,例如“com.example.android.app”。
如果用户的设备运行 API 级别 8 或更高版本并且他们卸载了您的应用程序,则此目录及其所有内容将被删除。
卸载应用程序后,您将无法运行代码,因此您必须允许操作系统为您进行清理。这意味着您不能将文件放在 SD 卡上的任何位置,而必须遵循操作系统的规则。
因此,您不必在 SD 卡上创建自己的目录结构,而是必须将编写的文件放在调用getExternalFilesDir()
和返回的目录中getExternalCacheDir()
。然后,Android 在卸载时会自动删除这些目录的所有内容。