Не удается определить, когда в Android ответили на исходящий вызов

Чтобы определить ответ на исходящий вызов, я попытался создатьPhoneStateListener и слушая 's,TelephonyManagerCALL_STATE_RINGINGCALL_STATE_OFFHOOK, а такжеCALL_STATE_IDLE, отэтот вопрос, но это не похоже на работу, как описано ниже.

Сначала я зарегистрировал следующее разрешение в манифесте:


ЗатемBroadcastReceiver называетсяOutCallLogger что ловитNEW_OUTGOING_CALL событие, когда происходит исходящий звонок:


    
        
    

Далее моя реализацияOutCallLogger, Я установил логическое имяnoCallListenerYet чтобы не прикреплять новыйPhoneStateListener кTelephonyManager всякий раз, когдаonReceive() вызывается.

public class OutCallLogger extends BroadcastReceiver {

    private static boolean noCallListenerYet = true;

    @Override
    public void onReceive(final Context context, Intent intent) {
        number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        if (noCallListenerYet) {
            final TelephonyManager tm = (TelephonyManager) context.getSystemService(
                    Context.TELEPHONY_SERVICE);
            tm.listen(new PhoneStateListener() {
                @Override
                public void onCallStateChanged(int state, String incomingNumber) {
                    switch (state) {
                        case TelephonyManager.CALL_STATE_RINGING:
                            Log.d(This.LOG_TAG, "RINGING");
                            break;
                        case TelephonyManager.CALL_STATE_OFFHOOK:
                            Log.d(This.LOG_TAG, "OFFHOOK");
                            break;
                        case TelephonyManager.CALL_STATE_IDLE:
                            Log.d(This.LOG_TAG, "IDLE");
                            break;
                        default:
                            Log.d(This.LOG_TAG, "Default: " + state);
                            break;
                    }
                }
            }, PhoneStateListener.LISTEN_CALL_STATE);
            noCallListenerYet = false;
        }
    }

}

Теперь, когда я делаю исходящий звонок на моем устройстве,CALL_STATE_RINGING НИКОГДА не вызывается. Я всегда получаю только распечаткиIDLE» к "С КРЮЧКА" когда другая линия начинает звонить, ничего, когда на звонок отвечают, и распечатка "IDLE» снова, когда вызов закончен.

Как я могу надежно определить, когда на Android ответили на исходящий вызов, или это вообще возможно?

Ответы на вопрос(6)

Ваш ответ на вопрос