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

问题描述 投票:0回答:3

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

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

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

谢谢您的帮助

java android
3个回答
2
投票

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

如果可以这样做,那么Android就会崩溃。从根本上说,Android设备归用户所有。在卸载应用程序后将东西留在用户的设备上已经够糟糕了。以某种方式阻止用户摆脱它(坦率地说)是违反用户的信任。

这样的功能(如果存在的话)可能会被滥用。考虑一下:

  1. 我是一个邪恶的人。
  2. 我编写了一个应用程序,它会在用户的设备上隐藏掉大量不可删除的文件。
  3. 在填写用户设备后,我的应用程序有助于向用户“提供”删除文件...以支付“小额恢复费”。
  4. 如果用户卸载我的应用程序,他们仍然无法删除文件。
  5. 当他们重新安装应用程序时,费用会增加......

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


如果要保护内容文件,请在卸载应用程序后将其留在用户设备上。或者如果你这样做,那么使用加密...并给用户选择否决它。


0
投票

普通设备上的普通应用不支持此功能。在root设备上运行的应用可能会有更多选项。


0
投票

如果您的意思是想要使用外部存储并保存一个私有文件,即使在卸载了应用程序之后该文件仍保留在设备上,然后不能,您就无法执行此操作。

请参阅here,特别是以下内容

合法属于您的应用的文件,将在用户卸载您的应用时删除。虽然这些文件在技术上可由用户和其他应用程序访问,因为它们位于外部存储上,但它们不会为应用程序外的用户提供价值。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.