Как получить отключенный номер телефона в Android PhoneStateListener

Я использую PhoneStateListener для прослушивания состояния вызова, когда у нас есть входящий вызов, исходящий вызов и разъединение вызова. Все работают нормально. Но мой вопрос в том, что я хочу получить отключенный номер телефона в CALL_STATE_IDLE, CALL_STATE_OFFHOOK.

Когда у нас есть входящий звонок, я могу получить входящий номер телефона. Но когда телефонный звонок заканчивается, я не могу получить отключенный номер телефона. Я использую приведенный ниже код.

Кто-нибудь подскажет, как получить номер телефона CALL_STATE_IDLE, CALL_STATE_OFFHOOK.

// Call State Listener
private final class CallStateListener extends PhoneStateListener {
    @Override
    public void onCallStateChanged(int state, String inComingNumber) {
        switch (mCallState) {
            case TelephonyManager.CALL_STATE_IDLE:
                if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                    // New Outgoing Call
                } else if (state == TelephonyManager.CALL_STATE_RINGING) {
                    System.out.println("New Incoming Call");
                    System.out.println("CallStateListener Incoming Number: " + inComingNumber);
                    // New Incoming Call
                }
                break;

            case TelephonyManager.CALL_STATE_OFFHOOK:
                if (state == TelephonyManager.CALL_STATE_IDLE) {
                    // Call Disconnected
                    System.out.println("CallStateListener Disconnected Number: " + inComingNumber);
                    System.out.println("Call Disconnected");
                } else if (state == TelephonyManager.CALL_STATE_RINGING) {
                    // Another Call Waiting
                }
                break;

            case TelephonyManager.CALL_STATE_RINGING:
                if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
                    System.out.println("Call Received");
                    System.out.println("CallStateListener Received Number: " + inComingNumber);
                    // Call Received
                } else if (state == TelephonyManager.CALL_STATE_IDLE) {
                    System.out.println("CallStateListener Missed Number: " + inComingNumber);
                    // Call Missed
                }else if(state == TelephonyManager.CALL_STATE_RINGING) {
                }
                break;
        }
        mCallState = state;
    }
}

Когда я использую вышеуказанный PhoneStateListener, я получаю журнал как

CallStateListener Incoming Number: 4121312323
CallStateListener Missed Number:
CallStateListener Received Number:
CallStateListener Disconnected Number:

Я могу получить только номер входящего вызова в состоянии RINGINE, но я не могу получить номер телефона состояния полученного вызова, номер телефона состояния пропущенного вызова и номер телефона отключен. Пожалуйста, помогите мне. Спасибо


person Jebasuthan    schedule 28.03.2014    source источник
comment
Можете ли вы получить состояние для ответа по телефону противоположным лицом? (Это только мой вопрос).   -  person Lucifer    schedule 28.03.2014
comment
@Кедарнатх, да. Я могу получить состояние «Вызов принят», когда человек с противоположного сайта ответил на мой звонок.   -  person Jebasuthan    schedule 28.03.2014
comment
Как ? Можете ли вы поделиться кодом, пожалуйста?   -  person Lucifer    schedule 28.03.2014
comment
@Kedarnath, используя приведенный ниже код, я могу получить состояние «Принят вызов». случай TelephonyManager.CALL_STATE_RINGING: если (состояние == TelephonyManager.CALL_STATE_OFFHOOK) { System.out.println (вызов получен); System.out.println(CallStateListener Received Number: + inComingNumber); // Получен вызов } else if (state == TelephonyManager.CALL_STATE_IDLE) { System.out.println(CallStateListener Missed Number: + inComingNumber); // Вызов пропущен } else if(state == TelephonyManager.CALL_STATE_RINGING) { }   -  person Jebasuthan    schedule 28.03.2014
comment
@Kedarnath, я использую тот же источник. Это я ответил на другой вопрос. Пожалуйста, попробуйте этот код, чтобы получить номер отключенного вызова. "> stackoverflow.com/questions/22462726/   -  person Jebasuthan    schedule 28.03.2014


Ответы (1)


Попробуйте открыть активность следующим образом:

switch (state) {
case TelephonyManager.CALL_STATE_IDLE:
    Log.v("idle state", "CALL_STATE_IDLE");
    // CALL_STATE_IDLE ( OpenMissedCallScreen )

    if (ring == true && callReceived == false && CheckMissCall.isRunning== false) {
        flag = true;
        if (prefs.getBoolean("main_state", true))
        {
            Intent inter = new Intent(c, MissCall.class);

        }
    }
    break;
case TelephonyManager.CALL_STATE_OFFHOOK:
    // CALL_STATE_OFFHOOK ( OpenReceivedCallScreen )
    callReceived = true;
    break;
case TelephonyManager.CALL_STATE_RINGING:
    ring = true;
    // CALL_STATE_RINGING ( openIncomingCallScreen )
    break;
person user3883019    schedule 02.08.2014