android.intent.action.BOOT_COMPLETED

android.intent.action.BOOT_COMPLETEDをintent-filterに設定していても、BOOT_COMPLETEDを検知できないことがある。
ググってみたらこんな記事が。
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
どうやらAndroid3.1かららしい。
インストール後に一度もユーザが起動させていない場合はBOOT_COMPLETEDを拾えないようだ。
インストール直後はstoppedというstateになっているらしく、一度でもユーザが起動しているとstoppedのstateではなくなるみたい。
http://developer.android.com/intl/ja/sdk/android-3.1.html#launchcontrols
セキュリティ上の問題なのかな?

因みにandroid.intent.action.BOOT_COMPLETEDに必須のパーミッションであるandroid.permission.RECEIVE_BOOT_COMPLETEDにバグがある模様。
パーミッションがなくてもandroid.intent.action.BOOT_COMPLETEDはintent-filterに引っかかるとかで、検証したら確かにパーミッション不要でした。
http://code.google.com/p/android/issues/detail?id=14044
ICSでfixされる模様だけどどうなったんだろ?

%d人のブロガーが「いいね」をつけました。