当前位置: 首页 > 知识库问答 >
问题:

卸载时清除内部存储

云开诚
2023-03-14

当用户卸载我的应用程序时,我需要能够清除我的应用程序的内部存储目录。我该怎么做?

我正处于构建安全应用程序的测试阶段,该应用程序要求在应用程序首次安装到用户手机时由管理员设置ID。ID文件不能在外部存储中,因为我不想任何篡改。

如果管理员向用户提供了不正确的 ID,他们将无法通过立即卸载应用程序来解决此问题。我已尝试卸载该应用程序(并清除缓存等)以清除ID数据。重新安装应用程序后,文件仍然存在,因此无法更改 ID 号。

我正在将文件保存到我的应用程序的主内部文件目录中,如果有帮助的话。

IDFile = new File(context.getFilesDir(),"ID_Data.txt");

共有2个答案

隆向晨
2023-03-14

在清单中,将自动备份指定为“false”

android:allowBackup="false"

https://developer.android.com/guide/topics/data/autobackup.html

鲁光霁
2023-03-14

它不可能移除内部存储,一个应用在卸载时不会得到回调,所以它无法完成任何事情。

但它应该适用于外部存储:对外部存储(“sdcard”)上的文件使用getExternalFilesDir()和/或getExternalCacheDir()。卸载您的应用程序时,这些目录会自动删除。(来源)

你可以考虑另一种方法——用只存储在你的代码中的密钥加密应用程序存储的文件,这样只有应用程序才能解密,卸载后,剩余的文件将保持加密状态。

删除旧安装的数据(如果已重新安装)

  1. 启动应用程序后,检查是否有首选项“first_run”,如果它是空的 - 创建一个具有当前时间的首选项。
  2. 如果已经有这样的首选项,则需要检查它是否来自旧安装的此安装:检查实际安装时间。
  3. 如果您的首选项小于安装时间:删除所有旧文件。
 类似资料:
  • 好吧,这是一个奇怪的,我甚至不认为是可能的。 所以,自从我使用Nexus5X以来,当我卸载应用程序时,SharedPreferences就不会被删除。 我通过Android Studio安装了这个应用程序并进行了测试。然后我卸载应用程序。然后我通过Android Studio重新发布了这个应用程序,所有的SharedPreferences值仍然存在。 知道是什么引起的吗?

  • 由于install4j没有一个维护安装程序来允许删除部分组件,我修改了卸载程序,以创建显示每个可卸载组件的可配置表单,然后简单地根据用户选择删除文件,这反过来意味着删除标准卸载屏幕。

  • 我的项目遇到了一些内存问题,所以我决定对一些部分进行压力测试,以查看一些性能度量。我正在使用Google的ConcurrentLinkedHashMap库作为LRU内存缓存。我的测试代码的相关部分如下所示: 当内存超过50%时,我将throttle(油门)标志设置为true(真)。我有一个监视线程,它每2秒进行一次测量。以下是我得到的数字: 由于某种原因,我没有看到LRU缓存的

  • 我已在登录时在本地存储中设置了身份验证令牌,并在注销时将其清除。注销后,如果用户尝试再次登录,则从缓存中获取旧的身份验证令牌,而不是新设置的值。如何在清除本地存储时清除缓存。我在应用程序中使用angular 2。 登录: 注销:

  • 问题内容: 标题问了一切。我正在构建的网站上的内容根本不会很快改变,因此Memcache可能会存储几个月的数据,但当我进行更新时除外。有没有一种方法可以在每次部署站点时清除缓存?我正在使用Python运行时。 更新1 使用 jldupont 的答案,将以下代码放入主请求处理脚本中… 更新2 我已切换到Koen Bok在所选答案的注释中提到的方法,并在答案的第二次更新中为我的所有内存缓存键添加了有用

  • 问题内容: 通常,在从DOM上卸载组件之前,将清除计时器。但是,如果我们忘记清除计时器,会有什么副作用? 问题答案: 假设您在某个函数中调用,并且当您导航至另一个组件并且当前组件具有时,如果不清除计时器,则函数将继续执行。 因此,在该函数中,您需要清除计时器,该计时器可以通过以下方式返回: 如React DOCS中所述: 在卸载和销毁组件之前立即调用。使用此方法执行任何必要的清除,例如使计时器无效