Nik*_*lin 24 backup android uninstall android-lifecycle android-backup-service
我创建了一个创建文件并将文件存储到SD卡的应用程序.有没有办法将文件夹与应用程序绑定,以便在用户在Android设备上运行卸载时删除所有文件?
ron*_*y l 23
似乎自2009年以来有一些发展:).
从文档:
如果您使用的是API级别8或更高级别,请使用
getExternalCacheDir()打开表示应保存缓存文件的外部存储目录的文件.如果用户卸载了您的应用程序,则会自动删除这些文件.但是,在应用程序的生命周期中,您应该管理这些缓存文件并删除不需要的缓存文件以保留文件空间.如果您使用的是API级别7或更低级别,请使用
getExternalStorageDirectory()打开表示外部存储根目录的文件,然后将缓存数据写入以下目录:/ Android/data // cache /这是您的Java风格的包名,例如"com.example.android.app".
Pra*_*ast 12
您的应用程序无法知道它正在被卸载(不修改内核).data/data/your.app.package卸载应用程序后,将自动删除在其中创建的所有文件.
我不认为从SD卡中清除了任何东西.你可以做一个快速测试并找到它.
另一种方法可能是让另一个应用程序检查是否安装了此应用程序.如果没有,它可以进行清理工作.
我添加这个是因为现有的答案在 2017 年已经过时了。虽然没有关于应用程序卸载的回调,但已经提供了一些机制来保留卸载后的应用程序数据。
自 Android 6.0 (API 23) 起,应用程序自动备份 引入功能,允许开发人员允许或阻止自动应用程序备份。从 API 23 开始,默认启用备份。
application为清单文件引入了两个新标签:android:allowBackup和android:fullBackupContent.
要选择退出自动备份,请添加android:allowBackup="false"到application标签下的清单文件中。“true”值将自动将共享首选项和数据库以及其他文件保存到云中。
其次,您可以非常具体地说明要包含或排除的文件,以便在卸载时使用android:fullBackupContent标记进行删除或保留。此属性指向包含备份规则的 XML 文件。res/xml/使用以下语法在目录中创建 XML 配置文件:
<full-backup-content>
<include domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
<exclude domain=["file" | "database" | "sharedpref" | "external" | "root"]
path="string" />
</full-backup-content>
Run Code Online (Sandbox Code Playgroud)
您可以在此处添加要包含或排除的特定文件类型及其关联路径。将android:fullBackupContent = "@xml/my_backup_rules"标签添加到标签下的清单文件中application。
指定的文件将备份到设备主电子邮件帐户下的 Google Drive。如果用户启用了以下设置,则数据将在重新安装时恢复:
Settings -> Backup & Reset -> Automatic Restore.
还需要注意的是,备份数据不能被用户或设备上的其他应用程序读取。
也可以从这里从 Google Drive 应用程序访问相同的内容:
Google Drive -> Settings -> Auto backup for apps -> Backup and reset
值得注意的是,如果多个设备使用同一个主Google 帐户,则会创建多个设备备份。可以从这里访问单个设备的备份:
Google Drive -> Settings -> Backups