Add device and carrier flags for video calling fallback
These flags let the system dialer/contacts/SMS app determine if
integration with video calling apps are allowed if the carrier video
calling is not available.
EXTRA_SUPPORTS_VIDEO_CALLING_FALLBACK in PhoneAccount.getExtras()
should be checked first. This flag is disabled by default and OEMs
will need to enable it.
If the device supports the fallback, then
CarrierConfigManager.KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL should be
checked so individual carriers can ban the feature. This flag is
allowed by default.
Change-Id: Id46f684254402acb9142f87684ddff2d830f1701
Fixes: 62264468
Test: manual
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index b5d9d393..4390fae 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -92,6 +92,18 @@
/**
* Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which
+ * indicates whether this {@link PhoneAccount} supports using a fallback if video calling is
+ * not available. This extra is for device level support, {@link
+ * android.telephony.CarrierConfigManager#KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL} should also
+ * be checked to ensure it is not disabled by individual carrier.
+ *
+ * @hide
+ */
+ public static final String EXTRA_SUPPORTS_VIDEO_CALLING_FALLBACK =
+ "android.telecom.extra.SUPPORTS_VIDEO_CALLING_FALLBACK";
+
+ /**
+ * Boolean {@link PhoneAccount} extras key (see {@link PhoneAccount#getExtras()}) which
* indicates whether this {@link PhoneAccount} is capable of supporting a request to handover a
* connection from this {@link PhoneAccount} to another {@link PhoneAccount}.
* (see {@link android.telecom.Call#EVENT_REQUEST_HANDOVER}) which specifies
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index f2d2253..4147808 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -1220,6 +1220,15 @@
public static final String KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO = "video_calls_can_be_hd_audio";
/**
+ * Whether system apps are allowed to use fallback if carrier video call is not available.
+ * Defaults to {@code true}.
+ *
+ * @hide
+ */
+ public static final String KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL =
+ "allow_video_calling_fallback_bool";
+
+ /**
* Defines operator-specific {@link com.android.ims.ImsReasonInfo} mappings.
*
* Format: "ORIGINAL_CODE|MESSAGE|NEW_CODE"
@@ -1665,6 +1674,7 @@
sDefaults.putBoolean(KEY_ALLOW_ADD_CALL_DURING_VIDEO_CALL_BOOL, true);
sDefaults.putBoolean(KEY_WIFI_CALLS_CAN_BE_HD_AUDIO, true);
sDefaults.putBoolean(KEY_VIDEO_CALLS_CAN_BE_HD_AUDIO, true);
+ sDefaults.putBoolean(KEY_ALLOW_VIDEO_CALLING_FALLBACK_BOOL, true);
sDefaults.putStringArray(KEY_IMS_REASONINFO_MAPPING_STRING_ARRAY, null);
sDefaults.putBoolean(KEY_ENHANCED_4G_LTE_TITLE_VARIANT_BOOL, false);