Androidアプリで電話の着信を受ける

昔、作ったAndroidアプリを最近のSDKで単純にビルドしたら動かなかったので、調べ直している。
電話の着信とSMSの着信をする機能。

通話アプリを作成する
Androidの開発者向けドキュメント「通話アプリを作成する」を参考にしたら、「着信に応答する」の手順の1.に「アプリが通常のメカニズムを使用して新しい着信を受け取ります。」ここがわからない…

アプリが通常のメカニズムを使用して新しい着信を受け取ります。
通常のメカニズムがそもそもわからない。昔は着信用のBroadcastReceiverをManifestに書いておくと処理が飛んできたと思うんだけど…

調べたら、PhoneStateListenerをTelephoneManagerにlistenさせると、電話の状態が変わるたびにonCallStateChangedがコールされる。

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // 中略
        phoneStateListener = new PhoneStateListener() {
            @Override
            public void onCallStateChanged(int state, String phoneNumber) {
                super.onCallStateChanged(state, phoneNumber);
                switch (state) {
                    case TelephonyManager.CALL_STATE_RINGING:
                        tvResult.setText("RINGING from "+phoneNumber);
                        break;
                    case TelephonyManager.CALL_STATE_OFFHOOK:
                        tvResult.setText("OFFHOOK from "+phoneNumber);
                        break;
                    case TelephonyManager.CALL_STATE_IDLE:
                        tvResult.setText("IDLE from "+phoneNumber);
                        break;

                }
            }
        };
        TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
        telephonyManager.listen(phoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }

カテゴリー: Android パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA