From 8c332b727523ce0dbb9256f0f43a9c655d71a3ea Mon Sep 17 00:00:00 2001 From: Santos Cordon Date: Tue, 9 Jun 2015 14:57:07 -0700 Subject: [PATCH] TelephonyManager should use TelecomManager's getCallState(). Telecom's version includes non-cellular calls in its result. Many apps compile against TelephonyManager's existing API so we should update it to use telecom instead. We kept the implementation as cellular-only for getCallState[ForSubscription](...) version of the API (which is hidden anyway). Bug: 21732997 Change-Id: Ifd27e6b49d76fe96ccc969e5262b1a876670aeef --- .../android/telephony/TelephonyManager.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 12f164441acec..393888dd12276 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -193,7 +193,7 @@ public class TelephonyManager { // /** - * Broadcast intent action indicating that the call state (cellular) + * Broadcast intent action indicating that the call state * on the device has changed. * *

@@ -2437,10 +2437,23 @@ public class TelephonyManager { public static final int CALL_STATE_OFFHOOK = 2; /** - * Returns a constant indicating the call state (cellular) on the device. + * Returns one of the following constants that represents the current state of all + * phone calls. + * + * {@link TelephonyManager#CALL_STATE_RINGING} + * {@link TelephonyManager#CALL_STATE_OFFHOOK} + * {@link TelephonyManager#CALL_STATE_IDLE} */ public int getCallState() { - return getCallState(getDefaultSubscription()); + try { + ITelecomService telecom = getTelecomService(); + if (telecom != null) { + return telecom.getCallState(); + } + } catch (RemoteException e) { + Log.e(TAG, "Error calling ITelecomService#getCallState", e); + } + return CALL_STATE_IDLE; } /**