Adds CNAP name filtering based on CarrierConfig am: bf1c69432a am: 35d58c7d74
am: bca6361f1f
Change-Id: If33185d03dfb8e53491170f402ffaa624f8be03b
diff --git a/src/com/android/services/telephony/TelephonyConnection.java b/src/com/android/services/telephony/TelephonyConnection.java
index bbfe1b1..3810699 100644
--- a/src/com/android/services/telephony/TelephonyConnection.java
+++ b/src/com/android/services/telephony/TelephonyConnection.java
@@ -778,7 +778,7 @@
setAddress(address, presentation);
}
- String name = mOriginalConnection.getCnapName();
+ String name = filterCnapName(mOriginalConnection.getCnapName());
int namePresentation = mOriginalConnection.getCnapNamePresentation();
if (!Objects.equals(name, getCallerDisplayName()) ||
namePresentation != getCallerDisplayNamePresentation()) {
@@ -871,6 +871,33 @@
}
/**
+ * Filters the CNAP name to not include a list of names that are unhelpful to the user for
+ * Caller ID purposes.
+ */
+ private String filterCnapName(final String cnapName) {
+ if (cnapName == null) {
+ return null;
+ }
+ PersistableBundle carrierConfig = getCarrierConfig();
+ String[] filteredCnapNames = null;
+ if (carrierConfig != null) {
+ filteredCnapNames = carrierConfig.getStringArray(
+ CarrierConfigManager.FILTERED_CNAP_NAMES_STRING_ARRAY);
+ }
+ if (filteredCnapNames != null) {
+ long cnapNameMatches = Arrays.asList(filteredCnapNames)
+ .stream()
+ .filter(filteredCnapName -> filteredCnapName.equals(cnapName.toUpperCase()))
+ .count();
+ if (cnapNameMatches > 0) {
+ Log.i(this, "filterCnapName: Filtered CNAP Name: " + cnapName);
+ return "";
+ }
+ }
+ return cnapName;
+ }
+
+ /**
* Sets the EXTRA_CALL_TECHNOLOGY_TYPE extra on the connection to report back to Telecom.
*/
private void setTechnologyTypeExtra() {