我需要监控由我的 Android 设备上的特定程序访问(或尝试访问但失败)的文件。类似于 PC 上的 FileMon。
网上有反编译程序的建议,但我正在寻找更直接的方法。
谢谢。
最佳答案
您应该使用标准的 android.os.FileObserver,此监视器文件(使用 inotify)在设备上的任何进程(包括本进程)访问或更改文件后触发事件。 FileObserver 是一个抽象类;子类必须实现事件处理程序 onEvent(int, String)。引用这个链接http://developer.android.com/reference/android/os/FileObserver.html
这里是一个简单的例子:
import android.os.FileObserver;
import android.util.Log;
/**
* SD Card file monitor
*
*/
public class SDCardListener extends FileObserver {
public SDCardListener(String path) {
super(path);
}
@Override
public void onEvent(int event, String path) {
switch(event) {
case FileObserver.ALL_EVENTS:
Log.d("all", "path:"+ path);
break;
case FileObserver.CREATE:
Log.d("Create", "path:"+ path);
break;
}
}
}
SDCardListener listener = new SDCardListener("YOURDIRPATH");
//Start monitoring
listener.startWatching();
// You can try to access the directory here
//Stop monitoring
listener.stopWatching();
你应该牢记的一件事是你应该保留对文件观察者对象的有效引用以防止它被 GC。
关于android - 在 Android 上监控文件访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592014/