Я разрабатываю приложение, которое запускается автоматически при загрузке устройства, и ему необходимо отслеживать некоторые специальные каталоги в памяти устройства, для этого я использую FileObservers, фрагмент моего кода:
if (folder == null)
throw new FailedExecutionException(
"Trying to check the limit of a null directory");
Log.d(TAG, "Setting a limit for " + folder.getAbsolutePath());
if (!folder.isDirectory())
throw new FailedExecutionException(
"FolderLimit should be checked on directories, "
+ folder.getAbsolutePath() + " is not a directory");
//Then create the FileObserver...
Когда я запускаю это приложение с запущенным устройством, оно работает, раздел, в котором находится папка, которую я наблюдаю, монтируется, и я могу ее контролировать, проблема в том, что когда я перезагружаю устройство, тогда этот код выполняется до того, как система смонтирует раздел и не распознает его как папку:
com.mycompany.android.helpers.util.FailedExecutionException: FolderLimit should be checked on directories, /mnt/sdcard1/mycompany/photo/white_list is not a directory
Я конечно могу сделать какую-то while(!created){ attempt() }
но хочу спросить, есть ли более изящный способ уведомить это приложение о том, что разделы уже смонтированы и система готова.
Что у меня есть, если я выполняю mount в оболочке:
127|root@android:/ # mount | busybox grep sdcard1
/dev/block/vold/179:4 /mnt/sdcard1 vfat rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime= 0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0
tmpfs /mnt/sdcard1/.android_secure tmpfs ro,relatime,size=0k,mode=000 0 0
Спасибо
EDIT Я забыл сказать, я не могу использовать Environment.getExternalStorage() для этого, это модифицированное устройство, и это раздел, который не гарантируется как внешний путь хранения в версии выпуска