diff options
author | Tyler Gunn <tgunn@google.com> | 2015-11-13 16:17:39 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-11-13 16:17:39 +0000 |
commit | 1b7fe82eceb5845ec002ad7c2b8bbbf0cac98634 (patch) | |
tree | d7a51c715b5afdea71eb3521611d3794619abdc8 /InCallUI | |
parent | e55c65ea8db35eba27e2f5f6a2848e822495af9b (diff) | |
parent | edf496040d42e16909ffdbf4810dc9b1e5b026f8 (diff) |
Merge "DO NOT MERGE Ensure call subject is hidden if disabled for carrier." into ub-contactsdialer-b-dev
Diffstat (limited to 'InCallUI')
-rw-r--r-- | InCallUI/src/com/android/incallui/Call.java | 32 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/CallCardPresenter.java | 4 | ||||
-rw-r--r-- | InCallUI/src/com/android/incallui/StatusBarNotifier.java | 5 |
3 files changed, 39 insertions, 2 deletions
diff --git a/InCallUI/src/com/android/incallui/Call.java b/InCallUI/src/com/android/incallui/Call.java index 9d9e7bf24..7b2724a37 100644 --- a/InCallUI/src/com/android/incallui/Call.java +++ b/InCallUI/src/com/android/incallui/Call.java @@ -33,6 +33,7 @@ import android.telecom.GatewayInfo; import android.telecom.InCallService.VideoCall; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; +import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; @@ -372,6 +373,13 @@ public class Call { private String mChildNumber; private String mLastForwardedNumber; private String mCallSubject; + private PhoneAccountHandle mPhoneAccountHandle; + + /** + * Indicates whether the phone account associated with this call supports specifying a call + * subject. + */ + private boolean mIsCallSubjectSupported; private long mTimeAddedMs; @@ -497,6 +505,22 @@ public class Call { mHandle = newHandle; updateEmergencyCallState(); } + + // If the phone account handle of the call is set, cache capability bit indicating whether + // the phone account supports call subjects. + PhoneAccountHandle newPhoneAccountHandle = mTelecomCall.getDetails().getAccountHandle(); + if (!Objects.equals(mPhoneAccountHandle, newPhoneAccountHandle)) { + mPhoneAccountHandle = newPhoneAccountHandle; + + if (mPhoneAccountHandle != null) { + TelecomManager mgr = InCallPresenter.getInstance().getTelecomManager(); + PhoneAccount phoneAccount = mgr.getPhoneAccount(mPhoneAccountHandle); + if (phoneAccount != null) { + mIsCallSubjectSupported = phoneAccount.hasCapabilities( + PhoneAccount.CAPABILITY_CALL_SUBJECT); + } + } + } } private static int translateState(int state) { @@ -609,6 +633,14 @@ public class Call { return mCallSubject; } + /** + * @return {@code true} if the call's phone account supports call subjects, {@code false} + * otherwise. + */ + public boolean isCallSubjectSupported() { + return mIsCallSubjectSupported; + } + /** Returns call disconnect cause, defined by {@link DisconnectCause}. */ public DisconnectCause getDisconnectCause() { if (mState == State.DISCONNECTED || mState == State.IDLE) { diff --git a/InCallUI/src/com/android/incallui/CallCardPresenter.java b/InCallUI/src/com/android/incallui/CallCardPresenter.java index 28311c9d6..58722a185 100644 --- a/InCallUI/src/com/android/incallui/CallCardPresenter.java +++ b/InCallUI/src/com/android/incallui/CallCardPresenter.java @@ -1031,7 +1031,9 @@ public class CallCardPresenter extends Presenter<CallCardPresenter.CallCardUi> boolean isIncomingOrWaiting = mPrimary.getState() == Call.State.INCOMING || mPrimary.getState() == Call.State.CALL_WAITING; - return isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject()); + return isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject()) && + call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED && + call.isCallSubjectSupported(); } /** diff --git a/InCallUI/src/com/android/incallui/StatusBarNotifier.java b/InCallUI/src/com/android/incallui/StatusBarNotifier.java index 12764fe7b..4b57278c4 100644 --- a/InCallUI/src/com/android/incallui/StatusBarNotifier.java +++ b/InCallUI/src/com/android/incallui/StatusBarNotifier.java @@ -29,6 +29,7 @@ import android.graphics.drawable.BitmapDrawable; import android.net.Uri; import android.telecom.Call.Details; import android.telecom.PhoneAccount; +import android.telecom.TelecomManager; import android.text.BidiFormatter; import android.text.TextDirectionHeuristics; import android.text.TextUtils; @@ -438,7 +439,9 @@ public class StatusBarNotifier implements InCallPresenter.InCallStateListener, boolean isIncomingOrWaiting = call.getState() == Call.State.INCOMING || call.getState() == Call.State.CALL_WAITING; - if (isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject())) { + if (isIncomingOrWaiting && !TextUtils.isEmpty(call.getCallSubject()) && + call.getNumberPresentation() == TelecomManager.PRESENTATION_ALLOWED && + call.isCallSubjectSupported()) { return call.getCallSubject(); } |