9

如果我正在编写的应用程序将一些文件永久存储到外部存储中会很方便(因此它们在应用程序退出[销毁]后仍然存在),但在卸载时我想做体面的事情并拥有这些删除文件以释放存储空间。

有什么办法可以在卸载时删除这些文件?

如果没有(我对此表示怀疑),那么我每次都必须创建这些文件。我试图通过让它们永久存在来节省启动时间并占用所需的空间。

注意:我需要使用外部存储,因此内部存储或数据库都不合适。

4

4 回答 4

10

实际上这是可能的。

android 会自动移除应用程序在外部存储中的文件,但文件必须在应用程序的特定路径内:

“...../Android/数据/APP_PACKAGE_NAME/”

其中 APP_PACKAGE_NAME 是应用程序的包名。另一个自动清空的路径是:

"...../Android/obb/APP_PACKAGE_NAME/" 其中 APP_PACKAGE_NAME 是应用程序的包名。

数据可以满足您的任何需求。obb 文件夹用于存放使用 play-store 和apk 扩展库下载的大文件。你不应该在那里创建文件。

于 2012-09-05T13:23:54.113 回答
7

No, I don't believe so. Only files that you write to internal storage will be removed when your application is uninstalled (or if the user presses the 'clear data' button in the Application settings app).

Your app can't receive its own PACKAGE_REMOVED broadcast intent either, so you essentially have no notification that you're being uninstalled.

于 2010-01-01T23:12:00.773 回答
4

是的,这是可能的。只需将文件写入外部文件目录:

File dir = getExternalFilesDir(null);

这将在 /Android/data/your.package/ 处创建一个文件夹。请注意,这不是sdcard中的External,但它是可公开访问的。如果用户卸载您的应用程序,该目录及其所有内容也将被删除。

于 2014-03-07T21:11:26.863 回答
2

引用 CommonsWare 的博客文章

  • 内部存储:您的文件已删除

  • 外部存储:如果您将文件写入以getExternalFilesDir()或为根的位置getExternalCacheDir(),则您的文件将被删除。如果您在其他地方(例如,Environment.getExternalStoragePublicDirectory())编写了文件,则不会删除您的文件

  • 可移动存储,在 Android 4.4 之前:可移动存储不可正式访问;如果您的文件在那里结束,则在卸载您的应用程序时不应将其删除

  • 可移动存储,Android 4.4+:AFAIK,如果您写入支持的位置(getExternalFilesDirs()getExternalCacheDirs()),如果卸载时设备中存在该特定的可移动存储位,则您的文件将被删除

于 2014-12-14T16:33:34.663 回答