diff options
Diffstat (limited to 'java/com/android/contacts/common/compat')
-rw-r--r-- | java/com/android/contacts/common/compat/TelephonyManagerCompat.java | 9 | ||||
-rw-r--r-- | java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java | 24 |
2 files changed, 33 insertions, 0 deletions
diff --git a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java index 4a16fb855..02113ca55 100644 --- a/java/com/android/contacts/common/compat/TelephonyManagerCompat.java +++ b/java/com/android/contacts/common/compat/TelephonyManagerCompat.java @@ -27,6 +27,7 @@ import android.telecom.PhoneAccountHandle; import android.telephony.TelephonyManager; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; +import com.android.dialer.telecom.TelecomUtil; import java.lang.reflect.InvocationTargetException; public class TelephonyManagerCompat { @@ -39,6 +40,8 @@ public class TelephonyManagerCompat { public static final String EVENT_CALL_REMOTELY_HELD = "android.telecom.event.CALL_REMOTELY_HELD"; public static final String EVENT_CALL_REMOTELY_UNHELD = "android.telecom.event.CALL_REMOTELY_UNHELD"; + public static final String EVENT_MERGE_START = "android.telecom.event.MERGE_START"; + public static final String EVENT_MERGE_COMPLETE = "android.telecom.event.MERGE_COMPLETE"; public static final String EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC = "android.telephony.event.EVENT_NOTIFY_INTERNATIONAL_CALL_ON_WFC"; @@ -163,6 +166,12 @@ public class TelephonyManagerCompat { public static void handleSecretCode(Context context, String secretCode) { // Must use system service on O+ to avoid using broadcasts, which are not allowed on O+. if (BuildCompat.isAtLeastO()) { + if (!TelecomUtil.isDefaultDialer(context)) { + LogUtil.e( + "TelephonyManagerCompat.handleSecretCode", + "not default dialer, cannot send special code"); + return; + } context.getSystemService(TelephonyManager.class).sendDialerSpecialCode(secretCode); } else { // System service call is not supported pre-O, so must use a broadcast for N-. diff --git a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java index 43eae589d..8393b2601 100644 --- a/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java +++ b/java/com/android/contacts/common/compat/telecom/TelecomManagerCompat.java @@ -18,6 +18,7 @@ package com.android.contacts.common.compat.telecom; import android.support.annotation.Nullable; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; +import java.lang.reflect.Field; /** Compatibility class for {@link android.telecom.TelecomManager}. */ public class TelecomManagerCompat { @@ -27,6 +28,13 @@ public class TelecomManagerCompat { public static final String EXTRA_LAST_EMERGENCY_CALLBACK_TIME_MILLIS = "android.telecom.extra.LAST_EMERGENCY_CALLBACK_TIME_MILLIS"; + // Constants from http://cs/android/frameworks/base/telecomm/java/android/telecom/Call.java. + public static final String EVENT_REQUEST_HANDOVER = "android.telecom.event.REQUEST_HANDOVER"; + public static final String EXTRA_HANDOVER_PHONE_ACCOUNT_HANDLE = + "android.telecom.extra.HANDOVER_PHONE_ACCOUNT_HANDLE"; + public static final String EXTRA_HANDOVER_VIDEO_STATE = + "android.telecom.extra.HANDOVER_VIDEO_STATE"; + /** * Returns the current SIM call manager. Apps must be prepared for this method to return null, * indicating that there currently exists no registered SIM call manager. @@ -41,4 +49,20 @@ public class TelecomManagerCompat { } return null; } + + /** + * Handovers are supported from Android O-DR onward. Since there is no API bump from O to O-DR, we + * need to use reflection to check the existence of TelecomManager.EXTRA_IS_HANDOVER in + * http://cs/android/frameworks/base/telecomm/java/android/telecom/TelecomManager.java. + */ + public static boolean supportsHandover() { + // + try { + Field field = TelecomManager.class.getDeclaredField("EXTRA_IS_HANDOVER"); + return "android.telecom.extra.IS_HANDOVER".equals(field.get(null /* obj (static field) */)); + } catch (Exception e) { + // Do nothing + } + return false; + } } |