AlarmManagerからサービスを起動してNotification発行→NotificationアイコンタップでActivity(非MAIN)起動という流れ。
同じような作りのアプリが複数あるが、NotificationアイコンからActivityが起動できるものとできないものがある。Notificationから起動するActivityをMainActivityに変更すると起動できたので、元のActivityに戻すとこっちも起動できるようになった。謎。
また、開発を進めるうちにアプリアンインストール→新規インストールした場合にAlarmManagerからのサービス起動もできなくなっていた。謎。
以下のログが出力されている。パーミッション絡みのようだが。。。
1 2 |
09-02 11:15:16.431: W/ActivityManager(591): Permission Denial: Accessing service ComponentInfo{com.skelabo.xxxx/com.skelabo.xxxx.MyAlarmService} from pid=-1, uid=10214 that is not exported from uid 10215 09-02 11:24:32.063: W/ActivityManager(591): java.lang.SecurityException: Permission Denial: starting Intent { flg=0x10000000 cmp=com.skelabo.xxxx/.xxxx bnds=[64,152][956,280] (has extras) } from null (pid=-1, uid=10200) not exported from uid 10217 |
とりあえずAndroidManifestでサービスと起動するActivityに以下を記述してうまくいっている。
1 |
android:exported="true" |
これがなくても動いてるアプリがあるんだけど、一応対応しておいたほうがいいのかなー
追記
端末を再起動したら上記設定なしでも動くようになった。うーむ。