首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileObserver未在onEvent中注册创建

FileObserver未在onEvent中注册创建
EN

Stack Overflow用户
提问于 2016-08-19 12:26:03
回答 2查看 1K关注 0票数 4

我有一个非常简单的FileObserver实现:

代码语言:javascript
复制
        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 and One Plus 2)

我在这里有什么需要做的吗?

EN

回答 2

Stack Overflow用户

发布于 2018-01-16 20:11:47

我没有确切的答案,但我知道有比文档中列出的更多的事件代码和/或其中的一些是某种组合,特别是当您正在监视目录和子目录时。

你可以做的是,如果你对创建事件感兴趣,而不是问

代码语言:javascript
复制
if (event == FileObserver.CREATE) { /* do something */ }

尝试询问它是否包含CREATE标志:

代码语言:javascript
复制
if ((event & FileObserver.CREATE) == FileObserver.CREATE) { /* do something */}

特别是,虽然在您的情况下可能不是这样,但是在创建目录时,会向CREATE事件添加一个ISDIR标志。

希望这能帮到别人。这是一个很好的描述系统的FileObserver是基于。

票数 0
EN

Stack Overflow用户

发布于 2019-07-12 11:13:04

#试试这个,希望它对你有用。我已经测试过了。

代码语言:javascript
复制
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 + "Pictures“是正确的文件路径。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39039019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档