有什么方法可以创建“永久”文件?

时间:2019-01-02 15:42:18

标签: android android-storage

“永久”是指它拒绝Android OS提供的应用程序卸载选项。显然,您不能使文件无法在用户终端中删除,至少,如果愿意,用户始终可以通过文件管理器将其删除。

我需要这样做,因为在我的应用程序中,当执行了某些操作时,该应用程序将禁止执行其他操作。到目前为止,这是通过文件控制的,但是没有什么可以阻止用户卸载该应用程序,而通过全新安装,这种情况将不再发生。

我可以实现某种服务器端逻辑,以防止用户继续使用,但是:

1)通过检查文件来防止这种情况更容易。

2)如果用户设法绕过此安全措施,发生什么并不重要,因此,我不介意其中的一些人是否能够绕过保护,只要文件可以“永久”即可并且位于一些晦涩的目录中,没有多少用户能够执行上述行为。

有什么办法吗?

3 个答案:

答案 0 :(得分:1)

这可以通过配置auto-backup来完成,假设用户已启用它。

例如here,我已经解释了如何在调试模式下禁用该行为。

进步之处在于,它可以跨多个设备运行,并绑定到该帐户。

答案 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时设置。