【问题标题】:How to use FileObserver in Android to Monitor "/sys/class/"如何在 Android 中使用 FileObserver 来监控“/sys/class/”
【发布时间】:2017-09-02 21:07:31
【问题描述】:

我正在尝试使用FileObserver 监控“/sys/class/udc”文件夹。我的应用程序是系统私有应用程序,因此不应该存在权限问题。我无法检测到更改事件。

String path = "/sys/class/udc";
static final int mask = (
    FileObserver.CREATE |
    FileObserver.DELETE |
    FileObserver.DELETE_SELF |
    FileObserver.MODIFY |
    FileObserver.MOVED_FROM |
    FileObserver.MOVED_TO |
    FileObserver.MOVE_SELF
);

public UsbCableDisconncetEvent(String path) {
    super(path, mask);
    Log.d(TAG, "DisconnectEventHandler modified");
}

public void onEvent(int event, String path) {
    Log.d(TAG, "recieved moified event " + event);
}

FileObserver是否支持对“/sys/class”文件的监控?

【问题讨论】:

    标签: android fileobserver


    【解决方案1】:

    通过 Android 框架代码后,我能够找到我的问题的答案。想用FileObesever监听内核事件(uevent)的可以参考以下代码:

    private static final String STATE_PATH = "/sys/class/android_usb/android0/state";
    public final UEventObserver mUEventObserver = new UEventObserver() {
           @Override
            public void onUEvent(UEventObserver.UEvent event) {
                Log.d(TAG, "USB UEVENT: " + event.toString());
            }
        };
    mUEventObserver.startObserving(USB_STATE_MATCH);
    
    You will start receiving events and should be able to see the same in the logs.
    

    【讨论】: