-1

通話を拒否した直後にアプリケーションを実行する方法はありますか?

解決策を検索しようとしましたが、何も見つかりませんでした。

前もって感謝します...

4

1 に答える 1

0

PhoneStateListener を使用して、通話がいつ終了したかを確認します。ほとんどの場合、リスナー アクションをトリガーして呼び出しが開始されるまで待機し (PHONE_STATE_OFFHOOK から PHONE_STATE_IDLE に変更されるまで待機します)、アプリを IDLE 状態に戻すコードを記述する必要があります。

サービスでリスナーを実行して、リスナーが稼働し続け、アプリが再起動されるようにする必要がある場合があります。いくつかのサンプルコード:

EndCallListener callListener = new EndCallListener();
TelephonyManager mTM = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
mTM.listen(callListener, PhoneStateListener.LISTEN_CALL_STATE);

リスナーの定義:

private class EndCallListener extends PhoneStateListener {
    @Override
    public void onCallStateChanged(int state, String incomingNumber) {
        if(TelephonyManager.CALL_STATE_RINGING == state) {
            Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
        }
        if(TelephonyManager.CALL_STATE_OFFHOOK == state) {
            //wait for phone to go offhook (probably set a boolean flag) so you know your app initiated the call.
            Log.i(LOG_TAG, "OFFHOOK");
        }
        if(TelephonyManager.CALL_STATE_IDLE == state) {
            //when this state occurs, and your flag is set, restart your app
            Log.i(LOG_TAG, "IDLE");
        }
    }
}
于 2013-09-01T23:34:01.993 に答える