summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTyler Gunn <tgunn@google.com>2017-09-22 11:07:10 -0700
committerTyler Gunn <tgunn@google.com>2017-09-22 13:26:48 -0700
commitb4f90ff10928df440c9d19c8594154283a6846a3 (patch)
treee0e9e87effbf94c3bc3cf5cb2131ffe6e8ab9a85
parent907664bb3db302577e9e6ac54448c607fddc70fa (diff)
downloadandroid_packages_services_Telecomm-b4f90ff10928df440c9d19c8594154283a6846a3.tar.gz
android_packages_services_Telecomm-b4f90ff10928df440c9d19c8594154283a6846a3.tar.bz2
android_packages_services_Telecomm-b4f90ff10928df440c9d19c8594154283a6846a3.zip
Prevent NewOutgoingCallBroadcast from being sent for self-managed calls.
When sending a self-managed call, prevent the new outgoing call broadcast from being sent. It realistically has no business being sent for self managed calls. Test: Used Duo and Voice APKs to reproduce issue. Verified this fix corrects it. Bug: 66671858 Change-Id: I7b5272f03bd174100cd2e12641524f4adfc1892f
-rw-r--r--src/com/android/server/telecom/NewOutgoingCallIntentBroadcaster.java24
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;
}