デバイスの起動時に自動的に起動するアプリケーションを開発しており、デバイスのメモリ内のいくつかの特別なディレクトリを監視する必要があります。これには 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() }
ますが、パーティションが既にマウントされ、システムの準備ができていることをこのアプリケーションに通知するよりエレガントな方法があるかどうかを尋ねたいと思います。
シェルでマウントを実行すると、次のようになります。
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
ありがとうございました
編集言い忘れましたが、これには Environment.getExternalStorage() を使用できません。これは変更されたデバイスであり、これはリリース バージョンの外部ストレージ パスであることが保証されていないパーティションです。