卸载应用程序时,内部存储“getFilesDir()”中的文件不会被删除

Posted

技术标签:

【中文标题】卸载应用程序时,内部存储“getFilesDir()”中的文件不会被删除【英文标题】:Files in internal storage "getFilesDir()" are not being deleted when app is uninstalled 【发布时间】:2020-09-01 18:31:37 【问题描述】:

标题几乎说明了一切。

我在内部存储中使用来自getFilesDir() 的路径创建了文件,其想法是在卸载应用程序时应将其删除。但它们根本没有被删除。

如果我想删除数据,我必须在手机应用程序设置中手动删除,或者使用 android Studio 中的设备文件资源管理器手动删除文件。这并不理想。

谁能帮忙?

【问题讨论】:

难以置信,因为它们应该在卸载时被删除。你有什么特殊的设备在哪个Android版本下? “如果我想删除数据,我必须在我的手机应用程序设置中手动删除”——你到底是怎么做的?如果您的应用程序已卸载,则“设置”应用程序中没有您的应用程序的位置。如果您担心重新安装后文件似乎仍然存在,请尝试在清单中的<application> 元素上设置android:allowBackup="false" @CommonsWare 我在卸载之前在应用设置中“清除数据”和“清除缓存”。这是我可以删除它们的唯一方法。 请注意其他奇怪的行为。在我手动清除数据并卸载,然后重新安装后,文件重新出现。就像每次我安装时它们都会被推送到手机上。那可能吗?我该如何阻止它? 刚刚看完你的评论。我会试试的 @CommonsWare 好用!非常感谢! 【参考方案1】:

android:allowBackup 属性可用于<application>,用于控制应用程序的数据是否可以由操作系统自动备份。如果此属性设置为 true 并重新安装应用程序,则会恢复其数据的备份。在开发过程中,这可能会很痛苦。而且,在生产环境中,您和用户都无法控制备份过程。

如果您希望禁用此功能 - 对于 debug 构建或所有构建 - 在相应版本的清单中将 android:allowBackup="false" 设置为 <application>(例如,src/main/ 用于所有构建,src/debug/ 用于 @987654329 @ 构建)。

【讨论】:

以上是关于卸载应用程序时,内部存储“getFilesDir()”中的文件不会被删除的主要内容,如果未能解决你的问题,请参考以下文章

Android文件各种存储路径的比较

Android 上的 getDir 和 getFilesDir 有啥区别?

Android系统文件目录路径说明

Glide 无法从内部存储加载文件

如何删除android中的内部存储文件?

如何让用户访问我的应用程序的内部存储目录?