我有一个非常简单的FileObserver实现:
observer = new FileObserver(rootPath+"Pictures") {
@Override
public void onEvent(int event, String path) {
//event &= FileObserver.ALL_EVENTS;
Log.d("home","event: "+event);
if (event == FileObserver.CREATE) {
Toast.makeText(cont, "File created", Toast.LENGTH_SHORT).show();
}
}
};
observer.startWatching();
它没有注册FileObserver.CREATE constant (256)
。我的日志显示为several 1's (Access), a few 16's (close_nowrite) and a few 32's (open) when I create a file but never a 256
。
我尝试了两种设备(三星Galaxy S7 Active和One Plus Two)
我需要做些什么呢?
答案 0 :(得分:0)
我没有确切的答案,但我知道有更多的事件代码而不是文档中列出的事件代码和/或其中一些是组合,特别是在您查看目录和子目录时。 / p>
如果您对CREATE事件感兴趣,而不是询问
,那么您可以做的是if (event == FileObserver.CREATE) { /* do something */ }
尝试询问它是否包含CREATE标志:
if ((event & FileObserver.CREATE) == FileObserver.CREATE) { /* do something */}
特别是,虽然这可能不是您的情况,但在创建目录时,会在CREATE事件中添加ISDIR标志。
希望有人帮助。系统Here is a nice description的系统Android的FileObserver基于。
答案 1 :(得分:0)
#尝试这个,希望它对您有用。我已经测试过了。
observer = new FileObserver(rootPath+"Pictures", FileObserver.CREATE) {
@Override
public void onEvent(int event, String path) {
//event &= FileObserver.ALL_EVENTS;
Log.d("home","event: "+event);
Toast.makeText(cont, "File created", Toast.LENGTH_SHORT).show();
}
}
};
observer.startWatching();
确保rootPath +“图片”是正确的文件路径。