gpt4 book ai didi

android - FileObserver 收到奇怪的事件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:26:18 24 4
gpt4 key购买 nike

好的,这很简单:我有一个 FileObserver 类来观察带有音乐的文件夹。所以我实现了 onEvent 和所有这些东西,但是当我使用文件管理器将文件移动或粘贴到该文件夹​​时,我得到的不是 FileObserver.MOVED_TO 或 FileObserver.CREATE,而是带有 1073741656 之类数字的奇怪事件,没有记录在: http://developer.android.com/reference/android/os/FileObserver.html

那么我如何获取删除、移动、创建和粘贴等特定事件?

[编辑]这是代码:

 private class MusicsFileObserver extends FileObserver {

public MusicsFileObserver(String root) {
super(root);

if (!root.endsWith(File.separator)) {
root += File.separator;
}
}

@SuppressWarnings("unused")
public void close() {
super.finalize();
}

public void onEvent(final int event, String path) {
//here is the problem, if you see the documentation, when a file is moved
//to this directory, event should be equal to FileObserver.MOVED_TO,
//a constant value of 128. But when debugging, instead of entering here one time
//with event == 128, this method onEvent is being called 4~5 times with event
//with numbers like 1073741656
if (event != FileObserver.ACCESS || event != FileObserver.OPEN || event != 32768)
runOnUiThread(new Runnable() {
public void run() {
rescanMusics();
}
});
}
}

最佳答案

对于遇到此问题的任何其他人,我发现 MOVED_TO 和 MOVED_FROM 事件在事件标志中打开了高位。 MOVED_FROM 是 0x40000040,MOVED_TO 是 0x40000080。解决方法是简单地将 ALL_EVENTS 与事件代码“和”以关闭高位,即“event &= FileObserver.ALL_EVENTS”

更新:我找到了可以从 https://asyncinotify.readthedocs.io/en/latest/doc/asyncinotify.html 获得的 inotify 标志,如果谷歌将这些位标志添加到 FileObserver 文档中,那就太好了。

关于android - FileObserver 收到奇怪的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6336422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com