Android 4.4.2和File Observer - 创建文件识别

时间:2014-09-24 11:45:24

标签: android file sony

我在平板电脑上识别文件创建有问题索尼Xperia Z与android 4.4.2我有这样的代码:

private void observeDirectory(final String path){
        observer = new FileObserver(path) { // set up a file observer to watch this directory on sd card


            @Override
            public void onEvent(int event, String file) {

                //Log.v("FILE EVENT", "Event id: " + Integer.toString(event));
                switch (event) {
                    case FileObserver.ACCESS:
                        //Log.d("FILE OBSERVER", "FILE ACCESS " + file);
                    break;

                    case FileObserver.OPEN:
                        Log.d("FILE OBSERVER", "FILE Open: " + file);
                    break;

                    case  android.os.FileObserver.MOVED_FROM:
                        Log.d("FILE OBSERVER", "FILE Moved From: " + file);
                    break;

                    case  android.os.FileObserver.MOVED_TO:
                        Log.d("FILE OBSERVER", "FILE Moved to: " + file);
                    break;

                    case  android.os.FileObserver.MOVE_SELF:
                        Log.d("FILE OBSERVER", "FILE Moved self: " + file);
                    break;

                    case FileObserver.CLOSE_NOWRITE:
                        Log.d("FILE OBSERVER", "FILE closed & no - write: " + file);
                    break;

                    case FileObserver.CLOSE_WRITE:
                        Log.d("FILE OBSERVER", "FILE closed & write: " + file);
                    break;

                    case  android.os.FileObserver.MODIFY:
                        Log.d("FILE OBSERVER", "FILE closed & no - write: " + file);
                    break;

                    case  android.os.FileObserver.CREATE:
                        Log.d("FILE OBSERVER", "File created [" + path + "/" + file + "]");
                    break;
                    case FileObserver.DELETE:
                        Log.d("FILE OBSERVER", "FILE DELETED " + file);
                    break;


                }



            }

        };
        observer.startWatching(); //START OBSERVING
    }

它正在运作但没有向我提供有关所有活动的信息。作为此方法的参数,我正在传递文件夹路径。我有关于访问该文件的信息,打开ans关闭而不保存。但我也有不同的Android应用程序,它在这个目录中创建文件。我必须使用文件观察器检测它何时发生但我无法使其工作。我不需要在那里使用重复,因为我只有一个文件夹。我怎样才能使它工作?

有趣的是,这段代码就像三星设备和Nexus 5(kitkat / Android L)和Nexus7(kitkat)上的魅力一样。但不知何故,Xperia Tablet Z存在问题,我真的不知道为什么会这样。在将文件加载到列表视图中时,我看到仅在应用程序启动时访问文件的警报。但在那之后完全没什么意义。在Nexus上我一直都在工作,我有关于创建和编写文件的信息。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

我只能通过向清单添加uses-permission android.permission.WRITE_EXTERNAL_STORAGE来让FileObserver在KitKat上工作。我不知道为什么从4.4版本的Android版本开始需要此权限,并且可能仅在您要监视外部存储时才需要此权限。遗憾的是,我找不到有关此行为更改的任何文档或信息。

你可能正在尝试观看内部存储,因为你能够(不像我)将其用于Nexus 7,但这个答案对某些人来说仍然有用。