是否可以创建私有但持久的文件?

时间:2018-07-10 12:02:27

标签: java android

如前所述,我想知道是否可以创建一个永久的私有文件,如果卸载了该应用程序,该文件不会被删除。

我尝试使用Context.MODE_PRIVATE使用openFileOutput()方法保存文件,但是在卸载应用程序后,这些文件将被删除。

我想要获取一个私有且受保护的文件,该文件只能由我的应用程序访问,但是如果该应用程序已卸载,则可以保留

谢谢您的帮助

3 个答案:

答案 0 :(得分:2)

  

我想知道是否可以创建一个永久的私有文件,如果卸载了该应用程序,该文件不会被删除。

如果有可能这样做,则说明Android已损坏。基本上,Android设备归用户所有。卸载应用程序后在用户设备上留下东西已经够糟了。坦白地说,以防止用户摆脱它的方式来进行此操作违反了用户的信任。

此类功能(如果存在)将易于滥用。考虑一下:

  1. 我是一个邪恶的人。

  2. 我编写了一个应用程序,该应用程序将在用户设备上秘密地删除无法删除的大型文件。

  3. 在填满用户设备后,我的应用程序向用户提供了“要约”,以删除文件...以支付“少量恢复费”。

  4. 如果用户卸载了我的应用,他们仍然无法删除文件。

  5. 当他们重新安装该应用程序时,费用会增加...

(即使用户在技术上能够找到和删除文件,应用程序执行此操作仍然是令人讨厌的行为。请记住,许多用户不知道如何查找和删除文件以获得他们的存储空间。)


如果要保护内容文件,请不要在应用卸载后将其保留在用户的设备上。或者,如果这样做,则使用加密...,然后让用户选择否决此选项。

答案 1 :(得分:0)

普通设备上的普通应用程序不支持此功能。在有根设备上运行的应用可能在此处具有更多选项。

答案 2 :(得分:0)

如果您要使用外部存储设备并保存一个私有文件,即使卸载了该应用程序,私有文件仍会保留在设备上,那么不能,您不能这样做。

请参见here,尤其是以下内容

  

正确属于您的应用程序的文件,并且在用户卸载您的应用程序时将被删除。尽管这些文件位于外部存储上,因此从技术上讲用户和其他应用程序都可以访问这些文件,但它们无法为应用程序外部的用户提供价值。

我能想到的唯一类似的解决方案是将文件公共保存在外部存储中,并在外部文件目录中添加一个空的.nomedia文件。这样可以防止介质扫描仪读取文件。同样从上面的文档链接:

  

这可以防止媒体扫描仪读取您的媒体文件,并通过MediaStore内容提供程序将其提供给其他应用。