気になるので、実験をしてみた。
BroadcastReceiveでMEDIA関連のインテントをとりあえず受けとるようにして、SDを挿抜したときに何が出るのか見てみた。
こんなインテントフィルタ。
<intent-filter>
<action android:name="android.intent.action.MEDIA_EJECT"/>
<action android:name="android.intent.action.MEDIA_SCANNER_STARTED"/>
<action android:name="android.intent.action.MEDIA_REMOVED"/>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTABLE"/>
<action android:name="android.intent.action.MEDIA_BAD_REMOVAL"/>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_SCANNER_FINISHED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
<action android:name="android.intent.action.MEDIA_CHECKING"/>
<action android:name="android.intent.action.MEDIA_SCANNER_SCAN_FILE"/>
<action android:name="android.intent.action.MEDIA_SHARED"/>
<action android:name="android.intent.action.MEDIA_NOFS"/>
<data android:scheme="file"></data>
</intent-filter>
実は・・・あまりインテントがよくわかっていない。
actionだけではだめで、いくつかのチェックをかいくぐらないと通知しないそうだ。
dataに"file"ってやってなかったので、最初は全然だめだったのだ。
さて、これでSDを挿抜させると・・・・
08-18 19:12:33.830: DEBUG/IntentCatch(32119): android.intent.action.MEDIA_SCANNER_STARTED
08-18 19:12:35.020: DEBUG/IntentCatch(32119): android.intent.action.MEDIA_SCANNER_FINISHED
これしか出なかった。
logcatの出力も、だいたいこれにあっている。
なので、もうMEDIA_MOUNTEDとかで判定するよりも、MEDIA_SCANNER_FINISHEDが来たら何か起きたんだ、と思って調べる方がいいのかもね。
Eject SDはまだ何もしていないので、今度やろう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。