首页 > 解决方案 > 在从系统中删除之前,如何检测 Android 中任何文件的删除?

问题描述

我正在尝试在 Playstore 上开发一个类似Recycle Bin App的 android 应用程序,其中检测到从 android 系统中删除的任何文件并显示在可以恢复的回收站应用程序中(他们可能是通过制作一个文件被删除之前的副本)。

我尝试使用 android FileObserver 并制作了一个像这样的递归文件观察器类捕获系统中每个文件的系统事件,但即使在某些设备(例如华为手机)上也无法工作,并且只有在文件从系统中删除后才会调用删除事件。我尝试的另一件事是为调用 File.Access 或 File.Open 事件的任何文件创建文件输入流,然后在调用 File.delete 事件后制作该文件的副本。这里的问题是,当使用第三方文件资源管理器(Android OS 附带的)时,除非您专门打开文件,否则不会调用诸如访问之类的文件事件,因此如果用户删除文件而不先打开它,或者如果用户删除多个文件,我们无法在这些文件被删除之前捕获这些文件。

   public void onEvent(int event, String path) {
     switch (event) {
           case RecursiveFileObserver.ACCESS:
                 makeInputStremForPath(path);
                 break;

        case RecursiveFileObserver.DELETE:
          copyFile(inputStrem);
          break;
        }
}

因此,我正在寻找一些方法来检测任何文件上的删除事件,因为它即将从系统中删除。我进行了很多研究,但没有找到任何解决此问题的方法。PlayStore 上有另一个名为 Dumpster 的应用程序正在做这种事情(尽管从 3rd 方文件资源管理器中删除文件时有时也无法恢复文件)。我已经找到有关 Dumpster 应用程序一些背景的答案,但仍然没有为我的问题找到任何明确的解决方案。

标签: javaandroidrecycle-bin

解决方案


推荐阅读