我创建了一个应用程序而创建和储存的文件sd卡。有没有办法结合文件夹中的应用程序,以便删除所有的文件时的用户运行卸载频设备?

有帮助吗?

解决方案

有没有办法让你的应用程序知道它正在被卸载(不修改内核)。在data/data/your.app.package创建的所有文件被在应用程序卸载自动删除。

我觉得没有什么是从SD卡清除。你可以做一个简单的测试,发现了这一点。

另一种方法可以是具有另一种应用,它检查该应用程序是否安装或没有。如果不是这样,它可以做清理工作。

其他提示

看来似乎已有一些事态发展,因为2009年).

文档:

如果你使用API Level8或 大,使用 getExternalCacheDir() 要 打开文件,该文件表示 外部储存目录 应该省的高速缓存文件。如果用户 卸载你的应用程序,这些 文件将被自动删除。然而,在生活中的你 应用程序,应该管理这些 高速缓存文件,并删除那些 不需要为了维护 文件的空间。

如果你使用API7级或更低, 使用 getExternalStorageDirectory() 要 打开文件,它表示根 外部储存、然后编写 你的高速缓存的数据在下面 目录:

/机器人/数据//cache/ 这是你的Java的风格 包名称,例如 "com.例。序。应用程序"。

即使使用getExternalCacheDir()的时候,我已经看到缓存目录,这是你的应用程序的软件包名称,不会自动为它说在Android文档中删除,至少不会对联想A1。这可能是一个有点天真,但您可能希望在重新安装清理以前的数据。在那里,你可以找到,如果你的应用程序是未安装或正在安装的第一次 - 你存储的值,也许是一个布尔值,使用共享偏好。它可以是这样的:

SharedPreferences sharedPrefs = getSharedPreferences(INSTALL_PREFS, MODE_PRIVATE);
if(sharedPrefs.getBoolean("AppInstalled", false) == false){
    //DELETE APP DIRECTORY
    SharedPreferences.Editor editor = sharedPrefs.edit();
    editor.putBoolean("AppInstalled", true);
    editor.commit();
}

此方式,每次应用程序运行时,它检查其是否是第一次,它的运行。当应用程序被删除,所以将共享偏好的应用程序。然后,它安装在接下来的时间中,if(...)将是真实的,你可以做一些清理那里。

我知道这并不直接回答这个问题,这不是很好的留在用户的设备上未使用的数据,但我认为这可能是在试图清理当一个应用程序被删除,这是明智的选择,但似乎是不可能的。

我添加这一点,因为现有的答案都是过时的,在2017年。当它是真实的,没有回上应用程序卸载,有些机制已提供的保护应用程序的数据无法卸载。

  • 由于安卓6.0(API23), 自动备份 应用程序 功能是引入,它允许开发人员或者允许或阻止自动应用程序的备份。作为API23份启用了默认。

  • 两个新的 application 标记已经引入了对于该清单的文件: android:allowBackupandroid:fullBackupContent.

选择退出的自动备份,加 android:allowBackup="false" 以下的文件清单 application 标记。一个值的"真正"自动保存共同的偏好和数据库,以云,以及 其他文件.

其次,你可以非常具体有关的文件你想要的 包括排除 对删除或保护与卸载 android:fullBackupContent 标记。这种属性有XML文件,该文件包含后备规则。Create an XML配置文件 res/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>

在这里你可以添加的特定文件的类型,以包括或排除及其相关的路径。添加 android:fullBackupContent = "@xml/my_backup_rules" 标签清单下的文件 application 标记。

指定的文件将是备份到谷歌的驱动下,主要的电子邮件帐户的设备。该数据将被恢复,在重新安装 提供如下设置的用户:

Settings -> Backup & Reset -> Automatic Restore.

它也应该注意到备份的数据不能被读取通过用户或其他应用程序设备。

enter image description here

同样也可以从该谷歌驱动的应用程序从这里:

Google Drive -> Settings -> Auto backup for apps -> Backup and reset

enter image description here

值得注意的是,如果相同 谷歌的帐户用于多的设备,然后多设备的备份的创建。备份单独的设备可以从这里:

Google Drive -> Settings -> Backups

Google Drive - loading= Settings -> Backups">

它似乎是由于那么有一个适当的soltuion, 上下文。getExternalFilesDir():

返回的绝对路径向目录上的外部文件系统 (那是什么地方上的环境。getExternalStorageDirectory())哪里 该应用程序可以把持久性文件,它拥有。这些文件 私人的应用程序,通常不用户可见的作为 媒体。

这就像是getFilesDir()在这些文件将被删除时 卸载应用程序

如果要存储大量的数据,然后将其存储在与文件路径名的外部存储诸如

Environment.getExternalStorageDirectory().toString()+"/Android/data/packageName"

其中包名称是你的应用程序包名称例如com.think.abc

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top