Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 卸载时清除内部存储_Java_Android - Fatal编程技术网

Java 卸载时清除内部存储

Java 卸载时清除内部存储,java,android,Java,Android,当用户卸载我的应用程序时,我需要能够清除应用程序的内部存储目录。我该怎么做 我正在构建一个安全应用程序的测试阶段,当应用程序第一次安装到用户的手机上时,需要管理员设置一个ID。ID文件不能在外部存储器中,因为我不希望任何篡改 如果管理员向用户提供了不正确的ID,他们将无法通过立即卸载应用程序来解决此问题。我已尝试卸载应用程序(并清除缓存等)以清除ID数据。重新安装应用程序后,文件仍然存在,因此无法更改ID号 如果有帮助的话,我正在将文件保存到我的应用程序的主内部文件目录中 IDFile = ne

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

我正在构建一个安全应用程序的测试阶段,当应用程序第一次安装到用户的手机上时,需要管理员设置一个ID。ID文件不能在外部存储器中,因为我不希望任何篡改

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

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

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

不可能删除内部存储,卸载时应用程序不会收到回调,因此它无法完成打包

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

你可以考虑另一种方法——用只存储在代码中的密钥加密应用程序存储的文件,因此只有应用程序才可能解密,并且当卸载时剩余的文件将保持加密。 想法2 如果重新安装,请删除旧安装的数据

  • 启动应用程序后,检查是否有首选项“first_run”,如果是空的,请使用当前时间创建一个首选项
  • 如果已经有这样的首选项,则需要检查它是否来自此安装的旧首选项:检查
  • 如果您的首选项小于安装时间:删除所有旧文件

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


    谢谢你的回复,但我认为这行不通。我今天买了一台平板电脑,测试了我的应用程序,卸载后重新安装。重新安装时,数据仍然存在。。。换句话说,如果没有谷歌账户来备份数据,问题依然存在。当然,除非那些没有谷歌账户的人有一些在线存储。我在想,你可以在清单中放一些东西,告诉系统删除所有东西。这不完全是回调,更像是一个标志。我可能需要做个变通……我不知道会有这样的情况。但我有另一个想法给你——我会把它添加到我的回答中。想法2与我自己想做的事情相似,但缺少了时间戳的概念。那就行了。你还用前三个词回答了主要问题。我通常会尝试使用已经存在的用于操作系统级操作的开发人员功能,因此我很惊讶开发人员没有包括在卸载应用程序时清除数据的选项。。。感谢您的帮助。找到了一些可能有帮助的方法:对外部存储(“SD卡”)上的文件使用getExternalFilesDir()和/或getExternalCacheDir()。卸载你的应用程序时,这些目录会自动删除。我会记住这一点,并感谢你抽出时间!再次感谢!
    android:allowBackup="false"