Loading app/src/main/java/foundation/e/drive/services/FileObserverService.java +5 −1 Original line number Diff line number Diff line Loading @@ -44,13 +44,17 @@ public class FileObserverService extends Service { String path = Environment.getExternalStorageDirectory().getAbsolutePath(); Log.d("obService", path); mFileObserver = new RecursiveFileObserver(path, new RecursiveFileObserver.EventListener() { mFileObserver = new RecursiveFileObserver(getApplicationContext(), path, new RecursiveFileObserver.EventListener() { @Override public void onEvent(int event, File file) { //Modify =2, create =256, delete =512, movedTo =128 if(event== FileObserver.CREATE || event==FileObserver.MODIFY || event== FileObserver.DELETE || event ==FileObserver.MOVED_TO){ Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); try { if(observerFlag == -1){ Loading app/src/main/java/foundation/e/drive/utils/RecursiveFileObserver.java +23 −9 Original line number Diff line number Diff line Loading @@ -3,34 +3,41 @@ package foundation.e.drive.utils; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Stack; import android.content.Context; import android.os.FileObserver; import android.util.Log; import foundation.e.drive.database.DbHelper; import foundation.e.drive.models.SyncedFolder; public class RecursiveFileObserver extends FileObserver { private final Map<String, FileObserver> mObservers = new HashMap<>(); private final Context applicationContext; private String mPath; private int mMask; private EventListener mListener; public interface EventListener { void onEvent(int event, File file); } public RecursiveFileObserver(String path, EventListener listener) { this(path, ALL_EVENTS, listener); public RecursiveFileObserver(Context applicationContext, String path, EventListener listener) { this(applicationContext, path, ALL_EVENTS, listener); } public RecursiveFileObserver(String path, int mask, EventListener listener) { public RecursiveFileObserver(Context applicationContext, String path, int mask, EventListener listener) { super(path, mask); mPath = path; mMask = mask | FileObserver.CREATE | FileObserver.DELETE_SELF; mListener = listener; this.applicationContext=applicationContext; } private void startWatching(String path) { Loading @@ -48,7 +55,14 @@ public class RecursiveFileObserver extends FileObserver { @Override public void startWatching() { Stack<String> stack = new Stack<>(); stack.push(mPath); //stack.push(mPath); List<SyncedFolder> mSyncedFolders =DbHelper.getAllSyncedFolders(applicationContext); if(!mSyncedFolders.isEmpty()){ for(SyncedFolder syncedFolder:mSyncedFolders){ stack.push(syncedFolder.getLocalFolder()); stack.push(syncedFolder.getRemoteFolder()); } } // Recursively watch all child directories while (!stack.empty()) { Loading Loading
app/src/main/java/foundation/e/drive/services/FileObserverService.java +5 −1 Original line number Diff line number Diff line Loading @@ -44,13 +44,17 @@ public class FileObserverService extends Service { String path = Environment.getExternalStorageDirectory().getAbsolutePath(); Log.d("obService", path); mFileObserver = new RecursiveFileObserver(path, new RecursiveFileObserver.EventListener() { mFileObserver = new RecursiveFileObserver(getApplicationContext(), path, new RecursiveFileObserver.EventListener() { @Override public void onEvent(int event, File file) { //Modify =2, create =256, delete =512, movedTo =128 if(event== FileObserver.CREATE || event==FileObserver.MODIFY || event== FileObserver.DELETE || event ==FileObserver.MOVED_TO){ Log.d("OnEvent", "...Event ..." + event+"...file ..." + file); try { if(observerFlag == -1){ Loading
app/src/main/java/foundation/e/drive/utils/RecursiveFileObserver.java +23 −9 Original line number Diff line number Diff line Loading @@ -3,34 +3,41 @@ package foundation.e.drive.utils; import java.io.File; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Stack; import android.content.Context; import android.os.FileObserver; import android.util.Log; import foundation.e.drive.database.DbHelper; import foundation.e.drive.models.SyncedFolder; public class RecursiveFileObserver extends FileObserver { private final Map<String, FileObserver> mObservers = new HashMap<>(); private final Context applicationContext; private String mPath; private int mMask; private EventListener mListener; public interface EventListener { void onEvent(int event, File file); } public RecursiveFileObserver(String path, EventListener listener) { this(path, ALL_EVENTS, listener); public RecursiveFileObserver(Context applicationContext, String path, EventListener listener) { this(applicationContext, path, ALL_EVENTS, listener); } public RecursiveFileObserver(String path, int mask, EventListener listener) { public RecursiveFileObserver(Context applicationContext, String path, int mask, EventListener listener) { super(path, mask); mPath = path; mMask = mask | FileObserver.CREATE | FileObserver.DELETE_SELF; mListener = listener; this.applicationContext=applicationContext; } private void startWatching(String path) { Loading @@ -48,7 +55,14 @@ public class RecursiveFileObserver extends FileObserver { @Override public void startWatching() { Stack<String> stack = new Stack<>(); stack.push(mPath); //stack.push(mPath); List<SyncedFolder> mSyncedFolders =DbHelper.getAllSyncedFolders(applicationContext); if(!mSyncedFolders.isEmpty()){ for(SyncedFolder syncedFolder:mSyncedFolders){ stack.push(syncedFolder.getLocalFolder()); stack.push(syncedFolder.getRemoteFolder()); } } // Recursively watch all child directories while (!stack.empty()) { Loading