拨出电话号码

时间:2017-08-02 16:51:27

标签: android

以下是我用来检索传入,传出呼叫号码的代码:

if(arg1.getAction().equals("android.intent.action.PHONE_STATE")){

                String state = arg1.getStringExtra(TelephonyManager.EXTRA_STATE);

                if(state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)){
                    Log.d(TAG, "Inside Extra state off hook");
                    String number = arg1.getStringExtra(TelephonyManager.EXTRA_PHONE_NUMBER);
                    Log.e(TAG, "outgoing number : " + number);              
                }       

                else if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)){   
                    Log.e(TAG, "Inside EXTRA_STATE_RINGING");
                    String number = arg1.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
                    Log.e(TAG, "incoming number : " + number);
                }
                else if(state.equals(TelephonyManager.EXTRA_STATE_IDLE)){
                    Log.d(TAG, "Inside EXTRA_STATE_IDLE");
                }   
            }

但是TelephonyManager.EXTRA_PHONE_NUMBER给了我一个错误,所以我无法得到拨出电话的号码!除此之外,我还想恢复通话的持续时间。请帮帮我。

1 个答案:

答案 0 :(得分:1)

从这里提到的这个问题, How to detect incoming calls, in an Android device?

操作NEW_OUTGOING_CALL会为您拨打电话号码,对于来电,您的代码可以正常使用。

if (intent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) {
            savedNumber = intent.getExtras().getString("android.intent.extra.PHONE_NUMBER");
        }
  

除此之外,我还想恢复的持续时间   呼叫。请帮帮我

您只能通过通话记录获取通话的持续时间,或者如果从onOutgoingCallEnded中的链接考虑上述答案,您可以减去开始和结束时间,但这又不会让您获得准确的时间,因为当呼叫被连接或应答时,OFF_HOOK被触发,所以最好坚持呼叫记录一段时间。

因此,如果您正在使用链接中的上述代码,并希望在onOutgoingCallEnded被触发后立即检测持续时间,请等待第二个adn,然后从通话记录中读取它然后将给出最新的条目,否则您将始终从通话记录中获取上一个条目。