From f5201ab71ff4d104265ab126e86afc6b81da8011 Mon Sep 17 00:00:00 2001 From: Hung-ying Tyan Date: Tue, 12 Oct 2010 11:22:54 +0800 Subject: [PATCH] Keep original phone number in SipConnection. In case it's a PSTN number carried by an Internet call, the phone app can still get the original phone number from Connection.getAddress() instead of getting a SIP URI. http://b/issue?id=3085996 Change-Id: Ie6c66100a4b5b2ce3f73baa1b446761cd51d7727 --- .../telephony/sip/SipConnectionBase.java | 4 ++-- .../internal/telephony/sip/SipPhone.java | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java b/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java index dc4b27b97519d..d546a085bc945 100644 --- a/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java +++ b/telephony/java/com/android/internal/telephony/sip/SipConnectionBase.java @@ -56,8 +56,8 @@ abstract class SipConnectionBase extends Connection { private DisconnectCause mCause = DisconnectCause.NOT_DISCONNECTED; private PostDialState postDialState = PostDialState.NOT_STARTED; - SipConnectionBase(String calleeSipUri) { - dialString = calleeSipUri; + SipConnectionBase(String dialString) { + this.dialString = dialString; postDialString = PhoneNumberUtils.extractPostDialPortion(dialString); diff --git a/telephony/java/com/android/internal/telephony/sip/SipPhone.java b/telephony/java/com/android/internal/telephony/sip/SipPhone.java index 67f13bd56f855..19685521dca9c 100755 --- a/telephony/java/com/android/internal/telephony/sip/SipPhone.java +++ b/telephony/java/com/android/internal/telephony/sip/SipPhone.java @@ -387,7 +387,8 @@ public class SipPhone extends SipPhoneBase { try { SipProfile callee = new SipProfile.Builder(calleeSipUri).build(); - SipConnection c = new SipConnection(this, callee); + SipConnection c = new SipConnection(this, callee, + originalNumber); connections.add(c); c.dial(); setState(Call.State.DIALING); @@ -578,6 +579,7 @@ public class SipPhone extends SipPhoneBase { private SipAudioCall mSipAudioCall; private Call.State mState = Call.State.IDLE; private SipProfile mPeer; + private String mOriginalNumber; // may be a PSTN number private boolean mIncoming = false; private SipAudioCallAdapter mAdapter = new SipAudioCallAdapter() { @@ -659,10 +661,16 @@ public class SipPhone extends SipPhoneBase { } }; - public SipConnection(SipCall owner, SipProfile callee) { - super(getUriString(callee)); + public SipConnection(SipCall owner, SipProfile callee, + String originalNumber) { + super(originalNumber); mOwner = owner; mPeer = callee; + mOriginalNumber = originalNumber; + } + + public SipConnection(SipCall owner, SipProfile callee) { + this(owner, callee, getUriString(callee)); } void initIncomingCall(SipAudioCall sipAudioCall, Call.State newState) { @@ -735,7 +743,10 @@ public class SipPhone extends SipPhoneBase { @Override public String getAddress() { - return getUriString(mPeer); + // Phone app uses this to query caller ID. Return the original dial + // number (which may be a PSTN number) instead of the peer's SIP + // URI. + return mOriginalNumber; } @Override