如前所述,我想知道是否可以创建一个永久的私有文件,如果卸载了该应用程序,该文件不会被删除。
我尝试使用Context.MODE_PRIVATE使用openFileOutput()方法保存文件,但是在卸载应用程序后,这些文件将被删除。
我想要获取一个私有且受保护的文件,该文件只能由我的应用程序访问,但是如果该应用程序已卸载,则可以保留
谢谢您的帮助
答案 0 :(得分:2)
我想知道是否可以创建一个永久的私有文件,如果卸载了该应用程序,该文件不会被删除。
如果有可能这样做,则说明Android已损坏。基本上,Android设备归用户所有。卸载应用程序后在用户设备上留下东西已经够糟了。坦白地说,以防止用户摆脱它的方式来进行此操作违反了用户的信任。
此类功能(如果存在)将易于滥用。考虑一下:
我是一个邪恶的人。
我编写了一个应用程序,该应用程序将在用户设备上秘密地删除无法删除的大型文件。
在填满用户设备后,我的应用程序向用户提供了“要约”,以删除文件...以支付“少量恢复费”。
如果用户卸载了我的应用,他们仍然无法删除文件。
当他们重新安装该应用程序时,费用会增加...
(即使用户在技术上能够找到和删除文件,应用程序执行此操作仍然是令人讨厌的行为。请记住,许多用户不知道如何查找和删除文件以获得他们的存储空间。)
如果要保护内容文件,请不要在应用卸载后将其保留在用户的设备上。或者,如果这样做,则使用加密...,然后让用户选择否决此选项。
答案 1 :(得分:0)
普通设备上的普通应用程序不支持此功能。在有根设备上运行的应用可能在此处具有更多选项。
答案 2 :(得分:0)
如果您要使用外部存储设备并保存一个私有文件,即使卸载了该应用程序,私有文件仍会保留在设备上,那么不能,您不能这样做。
请参见here,尤其是以下内容
正确属于您的应用程序的文件,并且在用户卸载您的应用程序时将被删除。尽管这些文件位于外部存储上,因此从技术上讲用户和其他应用程序都可以访问这些文件,但它们无法为应用程序外部的用户提供价值。
我能想到的唯一类似的解决方案是将文件公共保存在外部存储中,并在外部文件目录中添加一个空的.nomedia
文件。这样可以防止介质扫描仪读取文件。同样从上面的文档链接:
这可以防止媒体扫描仪读取您的媒体文件,并通过MediaStore内容提供程序将其提供给其他应用。