监控Android上的文件访问

时间:2013-09-03 12:11:02

标签: android

我需要监控Android设备上特定程序访问(或尝试访问和失败)的文件。像PC上的FileMon。

网上有建议反编译程序,但我正在寻找更直接的方法。

感谢。

1 个答案:

答案 0 :(得分:3)

你应该使用标准的 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。