让我们先澄清一下。
- Dumpster使用 .trash 目录,该目录可能始终存在,也可能不存在。应该注意的是,Dumpster 在许多设备上都不能正常运行,因为可以通过 google 评论看到。
- Dumpster使用(我从代码中猜到它仅用于教育目的)它自己的系统文件
Handler
使用 aservice
来检查onClick
事件,如果它是一个文件onClick
,它会将它File
以及它保存path
到一个单独的文件夹(通常是隐藏的)并保存它在一个database
地方。如果它被删除,你知道文件在哪里,如果没有,让我们从那个文件中删除该文件hidden folder
。好吧,这有点不值得痛苦,因为您几乎需要让您的服务几乎一直运行,这会使用 CPU 资源。它也可以在有根设备上运行,但为什么根设备仅用于此目的。
随着设备安全性的提高,执行这些任务的可能性越来越小。截至2017 年 1 月 9 日,所有这些文件回收站都对最新的 android 版本有负面评价。因此,证明了我的观点。
FileObserver
使用该概念检查文件甚至目录的任何更改,但您无法影响它,这意味着您无法阻止删除它会在用户删除后通知所有内容。
inotify.h
它NDK
用于创建应用程序,用于检查文件夹和文件上的事件,但如果提到该文件夹,则子子文件夹将不包含在此范围内或通知您文件的任何更改。而且 中使用的概念inotify
与 相同FileObserver
。您只能在文件被删除后收到通知。inotify 中使用的代码是这样的。
inotify_init
通过()创建 inotify 实例。
inotify
使用inotify_add_watch
() 函数将所有要监视的目录添加到列表中。
- 要确定发生的事件,请在 inotify 实例上执行 read()。此读取将被阻止,直到发生更改事件。建议使用
select
() 调用对此 inotify 实例执行选择性读取。
- 读取返回受监视目录上发生的事件列表。根据
read
() 的返回值,我们就可以确切地知道发生了什么样的变化。
- 如果取消对目录/文件的监视,请调用
inotify_rm_watch
()。
inotify 中存在的两种方法如下:
IN_DELETE
- 从监视目录中删除的文件/目录
IN_DELETE_SELF
– 监视的文件/目录本身已被删除
两者都与FileObserver
此解决方案可能无法完全提供帮助,但仍然可以帮助创建任何Dumpster类型的应用程序。可以说你需要创建你自己的File Manager
,你可以创建你自己FileV2
的扩展的自定义(只是一个很酷的名字文件版本 2.0)类,File
你可以根据需要覆盖删除方法(和所有其他方法)。你可以用你自己的文件创建一个custom
pop up
你想要文件的说法,是的,弹出的不是。(确保用户使用此文件管理器进行删除,否则它将无法正常工作,因为覆盖系统文件删除()也会弄乱其他应用程序)。delete
backing up
dismissing
class filev2 extends File {
public filev2(@NonNull String pathname) {
super(pathname);
}
public filev2(@NonNull URI uri) {
super(uri);
}
@Override
public boolean delete() {
// return super.delete();
//Do as you want and return the boolean.
}
}
但是,如果用户使用您的文件,请确保您的文件将被保存File Manager
。您可以intent-filters
为任务设置,以便您参与该FileManager
任务ACTION_VIEW
。
最后但我不确定这也许registerContentObserver
也可以使用。(虽然不确定)
资料来源:
Inotify.h 帮助网站
registerContentObserver 帮助
类似的问题
FileObserver 帮助
Linux 帮助已删除文件的日志
我希望它有所帮助,我希望你现在可以开始你想要的东西。