我在平板电脑上识别文件创建有问题索尼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上我一直都在工作,我有关于创建和编写文件的信息。有人可以帮帮我吗?
答案 0 :(得分:1)
我只能通过向清单添加uses-permission android.permission.WRITE_EXTERNAL_STORAGE
来让FileObserver在KitKat上工作。我不知道为什么从4.4版本的Android版本开始需要此权限,并且可能仅在您要监视外部存储时才需要此权限。遗憾的是,我找不到有关此行为更改的任何文档或信息。
你可能正在尝试观看内部存储,因为你能够(不像我)将其用于Nexus 7,但这个答案对某些人来说仍然有用。