在android中重写文件删除
是否可以重写File.delete()函数?每当我从其他应用程序(我的应用程序不使用)中删除SD卡中的任何文件时,我需要一个通知,就像此文件将被删除一样。我尝试过的一个示例代码片段是在android中重写文件删除,android,recycle-bin,Android,Recycle Bin,是否可以重写File.delete()函数?每当我从其他应用程序(我的应用程序不使用)中删除SD卡中的任何文件时,我需要一个通知,就像此文件将被删除一样。我尝试过的一个示例代码片段是 public class ExtendFile extends File { public ExtendFile(File dir, String name) { super(dir, name); // TODO Auto-generated construc
public class ExtendFile extends File
{
public ExtendFile(File dir, String name)
{
super(dir, name);
// TODO Auto-generated constructor stub
}
@Override
public boolean delete()
{
System.out.println("to be deleted");
return super.delete();
}
}
及
我在中的一个服务类中实现了上述两个语句。
现在我从其他应用程序中删除了tmp.txt文件,但没有收到任何通知。
如何从其他应用程序获取通知?有没有可能
提前感谢不,这是不可能的。这不仅会导致其他应用程序出现问题,还会导致Android操作系统出现问题 使用FileObserver,您只能看到文件发生了什么。你不能影响它。
总结:如果您只想知道“/mnt/sdcard/tmp.txt”发生了什么,那么请使用FileObserver,但您无法阻止删除。为什么需要
@覆盖它?您不能将删除部分放入一个线程并仅在用户确认删除(例如通过对话框确认)时运行此线程吗?@g00dy谢谢您的回复。首先,我只是这样实现(使用对话框确认)。但它只适用于我自己的应用程序,不适用于其他应用程序。我如何从其他应用程序获得对话框确认?使用fileObserver(参见我的答案),您现在只通过包装文件来影响您自己的代码。fileObserver是一个选项,如上所述,但它无法解决您的“问题”,因为这根本不可能。在这种情况下,您可能希望编写一个Android Mod,但这对于您想要的东西来说是一个很大的工作。感谢您的回复。我正在尝试这样的应用程序。我尝试使用Fileobserver和Content observer获取通知,但这些仅在文件删除后才提供通知。这就是我试图重写File.delete()函数的原因。当用户要从SD卡删除任何文件时,我如何获得警报/通知?正如您所说,我们可以存储被删除文件的名称和路径。但是如何在android中获得相应文件的物理地址呢?嗯,我查看了模糊代码,它们使用的是.trash目录。所以不要理会我之前的评论。
File file = new File("/mnt/sdcard/tmp.txt");
ExtendFile f = new ExtendFile(file, tempPath);