File Observer no funciona desde el servicio de intenciones

He encontrado una gran clase para ampliar la clase abstracta File Observer …

import android.os.FileObserver; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import android.util.Log; public class FileSync extends FileObserver { public String absolutePath; public String uid; public FileSync(String path, String uidd) { super(path, FileObserver.ALL_EVENTS); absolutePath = path; uid = uidd; } @Override public void onEvent(int event, String path) { if (path == null) { //path is the name of the file... I think its absolute return; } //a new file or subdirectory was created under the monitored directory if ((FileObserver.CREATE & event)!=0) { doFileUpload(path, uid); } //a file or directory was opened if ((FileObserver.OPEN & event)!=0) { //TODO Nothing... yet } //data was read from a file if ((FileObserver.ACCESS & event)!=0) { //TODO Nothing... yet } //data was written to a file if ((FileObserver.MODIFY & event)!=0) { doFileUpload(path,uid); } //someone has a file or directory open read-only, and closed it if ((FileObserver.CLOSE_NOWRITE & event)!=0) { //TODO Nothing... yet } //someone has a file or directory open for writing, and closed it if ((FileObserver.CLOSE_WRITE & event)!=0) { doFileUpload(path,uid); } //[todo: consider combine this one with one below] //a file was deleted from the monitored directory if ((FileObserver.DELETE & event)!=0) { //TODO Remove file from the server } //the monitored file or directory was deleted, monitoring effectively stops if ((FileObserver.DELETE_SELF & event)!=0) { //TODO Toast an error, recreate the folder, resync and restart monitoring } //a file or subdirectory was moved from the monitored directory if ((FileObserver.MOVED_FROM & event)!=0) { //TODO Delete from the server } //a file or subdirectory was moved to the monitored directory if ((FileObserver.MOVED_TO & event)!=0) { doFileUpload(path,uid); } //the monitored file or directory was moved; monitoring continues if ((FileObserver.MOVE_SELF & event)!=0) { //TODO Recreate the folder and show toast } //Metadata (permissions, owner, timestamp) was changed explicitly if ((FileObserver.ATTRIB & event)!=0) { //TODO Nothing... Yet } } 

Creo tres de estos observadores en la Creación del IntentService como así:

 new File("/sdcard/Docs/").mkdir(); FileSync files = new FileSync("/sdcard/Docs/",uid); FileSync pictures = new FileSync(Environment.DIRECTORY_PICTURES,uid); FileSync music = new FileSync(Environment.DIRECTORY_MUSIC,uid); files.startWatching(); pictures.startWatching(); music.startWatching(); 

No sólo los observadores no funcionan, pero la función mkdir no funciona.

¿Algunas ideas? ¡Gracias!

Comprueba si has incluido android.permission.WRITE_EXTERNAL_STORAGE en tu archivo de manifiesto.
La ausencia de este permiso llevará a un fallo de mkdir() y esto hará que FileObserver falla también porque el archivo o directorio supervisado debe existir en el momento de startWatching, de lo contrario ningún evento será reportado.

  • Android la diferencia entre onHandleIntent & onStartCommand
  • ¿Es seguro el método onStartCommand (...) de IntentService?
  • ¿Cómo hacer que WakefulService (IntentService) espere hasta que MediaPlayer termine?
  • ¿Cómo mantener un IntentService funcionando incluso cuando la aplicación está cerrada?
  • ¿AlarmManager requiere que PendingIntent sea del tipo BroadcastReceiver?
  • START_STICKY para IntentService
  • Android, Mostrar alertaDialog en lugar de notificación cuando la aplicación está abierta
  • Biblioteca de clientes API de REST para Android
  • Cómo obtener el progreso de un IntentService
  • Android: mantener el servicio en ejecución cuando se mata la aplicación
  • Cómo recopilar información de IntentService y actualizar la interfaz de usuario de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.