gpt4 book ai didi

java - 保护和取消保护文件以避免在 Android 中被错误的清理应用程序意外删除

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:27 24 4
gpt4 key购买 nike

在我的 Android 应用程序中,我使用一些数据文件保存了一些文件

FileOutputStream savedList = new FileOutputStream(Path);

位于 SD 存储中名为 myApp 的文件夹中

不幸的是,我注意到一些清洁应用程序,没有很好地实现,也很受欢迎(例如 CleanMaster),每次用户执行临时\垃圾文件清理时都会错误地删除文件,从而导致问题。

有没有办法以编程方式保护(和解除写入保护)文件以避免这种情况?

如何更改文件权限?

由于不使用文件扩展名来识别文件格式,我该如何更改用于确定文件格式的文件的元数据,以便这些应用程序将这些文件视为文档?我猜想这些清理器的扫描使用了一些基于 Linux 文件格式识别的策略并删除了所有目标文件。

最佳答案

Android 允许在 SD 卡上为应用程序设置私有(private)目录。您可以按如下方式获取应用的私有(private)目录路径。

File myDir = getExternalFilesDir(null);

null参数表示你要在目录中存放任何类型的文件

myDir.mkdirs();
Log.d("info", myDir.getPath());

这些文件是应用程序的内部文件,通常不会作为媒体对用户可见。

这类似于 getFilesDir(),因为当应用程序被卸载时这些文件将被删除,但是有一些重要的区别:

  1. 共享存储可能并不总是可用,因为可移动媒体可能会被用户弹出。可以使用 getExternalStorageState(File) 检查媒体状态。
  2. 这些文件没有强制执行安全措施。例如,任何持有 WRITE_EXTERNAL_STORAGE 的应用程序都可以写入这些文件。

此解决方案对我有用,因为设备上的清理应用程序不会清理这些文件夹,将它们视为各个应用程序的私有(private)文件夹。

从 android 文档中查看以下链接。 Context.getExternalFilesDir(java.lang.String)

关于java - 保护和取消保护文件以避免在 Android 中被错误的清理应用程序意外删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24421496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com