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

时间:2013-04-13 13:57:50

标签: android

我遇到这个问题,当我卸载我的app文件夹仍然可以在sdcard路径中使用时,

我应该怎么做才能删除它?

请提出一些建议......

4 个答案:

答案 0 :(得分:12)

  

我应该怎么做才能删除它?

getExternalFilesDir()和/或getExternalCacheDir()用于外部存储上的文件(“sdcard”)。卸载应用程序时会自动删除这些目录。

除此之外,没有别的办法是可行的,因为当您的应用被删除时,您无法获得控制权。

答案 1 :(得分:8)

不幸的是,简单来说,答案是:不,你可以

理由:

  1. 您需要广播,您可以在卸载应用时收听。但是要卸载的应用程序无法获得卸载的任何广播。

  2. 如果您在设备的外部存储空间中创建了任何文件夹,则在用户卸载应用时无法调用代码。

  3. 建议和解决方案:

    1. 唯一的方法是使用getExternalCacheDir(),然后只卸载应用程序时自动删除的文件夹。

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

答案 2 :(得分:2)

一些读物:http://developer.android.com/guide/topics/data/data-storage.html#filesExternal

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

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

/ Android设备/数据/ “程序包”/文件/

“package_name”是您的Java样式包名称,例如“com.example.android.app”。

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

答案 3 :(得分:0)

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

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