Androidで電話着信を受けてなんかしたかった
android.intent.action.PHONE_STATE を拾えばいいじゃんと思っていたら、そうは問屋がおろさなかった件。
結論
- Androidの設定の中のアプリの設定で電話を有効にする。(https://stackoverflow.com/questions/52369874/broadcast-receiver-for-phone-state-changed-not-working の2つ目の回答)
- 端末の種類によっては動かないぽい(IP電話アプリがデフォルトになっている楽天のとか)
この2つをクリアすれば受け取れるようです。
ひっかかりポイント
- Virtual deviceでは動作する。
- Build versionは__関係ない__ ぽい。
- Manifestに書いてもだめなIntentも(特にOreo以降)あるが、今回は関係なかった。
- android:priority も関係ないぽい。というか組み込み通話アプリのpriorityが最優先になってるとオーバーライドできないぽい。
- logcatで似たようなIntentに対してpermission なんたらでるけど、そもそも拾えないIntentなので関係ない。
- TelephonyManagerの書き方も関係ない。