简体   繁体   English

如何在Android PhoneStateListener中获取断开的电话号码

[英]How to get the Disconnected Phone Number in android PhoneStateListener

I am using PhoneStateListener to listen the call State when we have incoming call, outgoing and disconnect the call. 当我们有来电,去电和断开通话时,我正在使用PhoneStateListener来监听通话状态。 All are working fine. 一切都很好。 But my question is i want to get the disconnected the phonenumber in CALL_STATE_IDLE , CALL_STATE_OFFHOOK . 但是我的问题是我想断开与CALL_STATE_IDLE CALL_STATE_OFFHOOK的电话号码的连接。

When we have incoming call i can get the incoming phone number. 当我们接到来电时,我可以获得来电号码。 But when the phone call end i cant able to get the disconnected phone number. 但是当电话结束时,我无法获得断开的电话号码。 I am using below code. 我正在使用下面的代码。

Anyone give me some ideas about how to get the phone number is CALL_STATE_IDLE , CALL_STATE_OFFHOOK . 任何人给我一些有关如何获取电话号码的想法是CALL_STATE_IDLECALL_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;
    }
}

When i am using above PhoneStateListener i am getting the log as 当我在PhoneStateListener上面使用时,我将日志获取为

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

I can get only Incoming Call Number in RINGINE State, But I can't get Call received state Phone number, Call Missed State Phone Number and Disconnected Phone Number. 在RINGINE状态下,我只能获取传入的电话号码,但在接收状态下,我无法获取呼叫号码,未接状态的电话号码和未连接的电话号码也无法获取。 Please any help guide me. 请任何帮助指导我。 Thanks 谢谢

Try to open activity like this: 尝试像这样打开活动:

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM