Android 監控(檢查)SD卡指定目錄的變化
阿新 • • 發佈:2018-11-28
Android 開發有時候需要檢測某個資料夾的變化,就可以使用 FileObserver這個類。
FileObserver這個類是系統自帶的,可以直接使用。
private FileObserver mFileObserver;
String path = "";//這個路徑就是需要 監控的路徑,但是隻能監控當前目錄的變化,其下子目錄內的變化是監控不到的!!
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_backup);
if (null == mFileObserver) {
mFileObserver = new SDCardFileObserver(path);
mFileObserver.startWatching(); //開始監聽
}
}
class SDCardFileObserver extends FileObserver {
String parentPath = "";
//mask:指定要監聽的事件型別,預設為FileObserver.ALL_EVENTS
public SDCardFileObserver(String path, int mask) {
super(path, mask);
}
public SDCardFileObserver(String path) {
super(path);
parentPath = path;
}
@Override
public void onEvent(int event, String path) {
final int action = event & FileObserver.ALL_EVENTS;
switch (action) {
case FileObserver.ACCESS:
MyLog.i(true, "MainActivity", "event: 檔案或目錄被訪問, path: " + path);
break;
case FileObserver.DELETE:
MyLog.i(true, "MainActivity", "event: 檔案或目錄被刪除, path: " + path);
break;
case FileObserver.OPEN:
MyLog.i(true, "MainActivity", "event: 檔案或目錄被開啟, path: " + path);
break;
case FileObserver.MODIFY:
MyLog.i(true, "MainActivity", "event: 檔案或目錄被修改, path: " + path);
break;
MyLog.i(true, "MainActivity", "event: 檔案或目錄被建立, path: " + path);
break;
}
}
}