diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2017-09-25 19:45:22 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2017-09-25 19:45:22 +0000 |
commit | 8475c15871914f3be5733264c364b10bcefaa2a0 (patch) | |
tree | 94151fc74ad1a7267130c11dad5a9e6c95358853 | |
parent | ae56c7c204dfdaf0c6801a17c71fc67a6b06bf76 (diff) | |
parent | b4f90ff10928df440c9d19c8594154283a6846a3 (diff) | |
download | android_packages_services_Telecomm-8475c15871914f3be5733264c364b10bcefaa2a0.tar.gz android_packages_services_Telecomm-8475c15871914f3be5733264c364b10bcefaa2a0.tar.bz2 android_packages_services_Telecomm-8475c15871914f3be5733264c364b10bcefaa2a0.zip |
Merge "Prevent NewOutgoingCallBroadcast from being sent for self-managed calls." into oc-mr1-dev
-rw-r--r-- | src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java index 74ee668d..c592fcd1 100644 --- a/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java +++ b/src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java @@ -30,6 +30,7 @@ import android.os.UserHandle; import android.telecom.GatewayInfo; import android.telecom.Log; import android.telecom.PhoneAccount; +import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; import android.telecom.VideoProfile; import android.telephony.DisconnectCause; @@ -269,6 +270,21 @@ public class NewOutgoingCallIntentBroadcaster { return DisconnectCause.INVALID_NUMBER; } + // True for all managed calls, false for self-managed calls. + boolean sendNewOutgoingCallBroadcast = true; + PhoneAccountHandle targetPhoneAccount = mIntent.getParcelableExtra( + TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE); + if (targetPhoneAccount != null) { + PhoneAccount phoneAccount = + mCallsManager.getPhoneAccountRegistrar().getPhoneAccountUnchecked( + targetPhoneAccount); + if (phoneAccount != null && phoneAccount.isSelfManaged()) { + callImmediately = true; + sendNewOutgoingCallBroadcast = false; + Log.i(this, "Skipping NewOutgoingCallBroadcast for self-managed call."); + } + } + if (callImmediately) { Log.i(this, "Placing call immediately instead of waiting for " + " OutgoingCallBroadcastReceiver: %s", intent); @@ -287,9 +303,11 @@ public class NewOutgoingCallIntentBroadcaster { // initiate the call again because of the presence of the EXTRA_ALREADY_CALLED extra. } - UserHandle targetUser = mCall.getInitiatingUser(); - Log.i(this, "Sending NewOutgoingCallBroadcast for %s to %s", mCall, targetUser); - broadcastIntent(intent, number, !callImmediately, targetUser); + if (sendNewOutgoingCallBroadcast) { + UserHandle targetUser = mCall.getInitiatingUser(); + Log.i(this, "Sending NewOutgoingCallBroadcast for %s to %s", mCall, targetUser); + broadcastIntent(intent, number, !callImmediately, targetUser); + } return DisconnectCause.NOT_DISCONNECTED; } |