2011/08/18

[a500]MEDIA_MOUNTEDの代わりにMEDIA_SCANNER_FINISHEDでよいかも

気になるので、実験をしてみた。
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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。