“永久”是指它拒绝Android OS提供的应用程序卸载选项。显然,您不能使文件无法在用户终端中删除,至少,如果愿意,用户始终可以通过文件管理器将其删除。
我需要这样做,因为在我的应用程序中,当执行了某些操作时,该应用程序将禁止执行其他操作。到目前为止,这是通过文件控制的,但是没有什么可以阻止用户卸载该应用程序,而通过全新安装,这种情况将不再发生。
我可以实现某种服务器端逻辑,以防止用户继续使用,但是:
1)通过检查文件来防止这种情况更容易。
2)如果用户设法绕过此安全措施,发生什么并不重要,因此,我不介意其中的一些人是否能够绕过保护,只要文件可以“永久”即可并且位于一些晦涩的目录中,没有多少用户能够执行上述行为。
有什么办法吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
只需获得写文件权限,然后将文件写入根文件目录即可。如此处所述:https://developer.android.com/training/data-storage/files#WriteExternalStorage
请求存储权限并确认存储为 可用时,您可以保存两种不同类型的文件:
- 公共文件:其他应用和用户应该可以免费使用的文件。当用户卸载您的应用程序时,这些文件应 保持对用户可用。例如,您的应用捕获的照片 或其他下载的文件应另存为公共文件。
- 私人文件:正确属于您的应用程序的文件,并且在用户卸载您的应用程序时将被删除。虽然这些文件是 用户和其他应用在技术上可以访问,因为它们位于外部存储设备上,它们无法为您应用之外的用户提供价值。
答案 2 :(得分:0)
我建议使用以下意图代替文件来捕获您的应用程序的卸载,并提出允许或拒绝进行卸载的逻辑
ACTION_PACKAGE_REMOVED-:广播操作:现有的应用程序包已从设备中删除。数据包含包的名称。正在安装的程序包没有收到此Intent。
ACTION_PACKAGE_FULLY_REMOVED-:广播操作:现有应用程序包已从设备中完全删除。数据包含包的名称。就像ACTION_PACKAGE_REMOVED,但仅在该广播的EXTRA_DATA_REMOVED为true且EXTRA_REPLACING为false时设置。