Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fa8555a7 authored by Vincent Bourgmayer's avatar Vincent Bourgmayer
Browse files

Add FileObserverService to start FileObserver

- Add services.FileObserverService
- Update FileEventListener to handle DELETE event instead of DELETE_SELF (not detected in test)
- Add entry in AndroidManifest for FileObserverService
- Start FileObserverService at the end of InitializerService's job
parent 1292ab62
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -53,6 +53,14 @@ http://www.gnu.org/licenses/gpl.html
                <action android:name="drive.services.InitializerService" />
            </intent-filter>
        </service>
        <service
            android:name=".services.FileObserverService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="drive.services.FileObserverService" />
            </intent-filter>
        </service>
        <service
            android:name=".services.ResetService"
            android:enabled="true"
+3 −2
Original line number Diff line number Diff line
@@ -15,6 +15,7 @@ import java.io.File;

/**
 * @author Narinder Rana
 * @author vincent Bourgmayer
 */
public class FileEventListener  {
    private final static String TAG = FileEventListener.class.getSimpleName();
@@ -23,8 +24,8 @@ public class FileEventListener {
        if (event== FileObserver.CLOSE_WRITE){ //Event triggered after modification/creation
            Log.d(TAG, "CLOSE_WRITE event for :"+file.getName());
        }
        if (event== FileObserver.DELETE_SELF ){
            Log.d(TAG, "DELETE_SELF event for :"+file.getName());
        else if (event== FileObserver.DELETE){
            Log.d(TAG, "DELETE event for :"+file.getName());
        }
    }
}
+46 −0
Original line number Diff line number Diff line
package foundation.e.drive.services;

import android.app.Service;
import android.content.Intent;
import android.os.Environment;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.Nullable;

import java.io.File;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import foundation.e.drive.FileObservers.FileEventListener;
import foundation.e.drive.FileObservers.RecursiveFileObserver;

public class FileObserverService extends Service {
    private final static String TAG = FileObserverService.class.getSimpleName();
    private RecursiveFileObserver mFileObserver = null;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "started");
        super.onStartCommand(intent, flags, startId);

        String path = Environment.getExternalStorageDirectory().getAbsolutePath();
        Log.d(TAG, "Added RecursiveFileObserver on root :"+path);


        mFileObserver = new RecursiveFileObserver(getApplicationContext(), path, new FileEventListener());

        mFileObserver.startWatching();
        return START_STICKY;
    }





    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -280,7 +280,8 @@ public class InitializerService extends Service implements OnRemoteOperationList
        CommonUtils.registerPeriodicFullScanWorker(WorkManager.getInstance(appContext));

        //all folder have been created

        Intent FileObserverService = new Intent(getApplicationContext(), foundation.e.drive.services.FileObserverService.class);
        startService(FileObserverService);

        //Immediatly start ObserverService to not have to wait 30 minutes.
        Intent observersServiceIntent = new Intent(getApplicationContext(), foundation.e.drive.services.ObserverService.class);
+2 −2

File changed.

Contains only whitespace changes.