summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/telecom
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/telecom')
-rw-r--r--java/com/android/dialer/telecom/TelecomCallUtil.java43
1 files changed, 13 insertions, 30 deletions
diff --git a/java/com/android/dialer/telecom/TelecomCallUtil.java b/java/com/android/dialer/telecom/TelecomCallUtil.java
index 3ae952357..6b66d868e 100644
--- a/java/com/android/dialer/telecom/TelecomCallUtil.java
+++ b/java/com/android/dialer/telecom/TelecomCallUtil.java
@@ -22,14 +22,11 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.annotation.WorkerThread;
import android.telecom.Call;
-import android.telecom.PhoneAccountHandle;
import android.telephony.PhoneNumberUtils;
-import android.telephony.SubscriptionInfo;
import android.text.TextUtils;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.LogUtil;
+import com.android.dialer.location.GeoUtil;
import com.google.common.base.Optional;
-import java.util.Locale;
/**
* Class to provide a standard interface for obtaining information from the underlying
@@ -72,11 +69,12 @@ public class TelecomCallUtil {
}
/**
- * Normalizes the number of the {@code call} to E.164. The country of the SIM associated with the
- * call is used to determine the country.
+ * Normalizes the number of the {@code call} to E.164. If the number for the call does not contain
+ * a country code, then the current location as defined by {@link
+ * GeoUtil#getCurrentCountryIso(Context)} is used.
*
- * <p>If the number cannot be formatted (because for example the country cannot be determined),
- * returns the number with non-dialable digits removed.
+ * <p>If the number cannot be formatted (because for example number is invalid), returns the
+ * number with non-dialable digits removed.
*/
@WorkerThread
public static Optional<String> getNormalizedNumber(Context appContext, Call call) {
@@ -94,11 +92,12 @@ public class TelecomCallUtil {
}
/**
- * Formats the number of the {@code call} to E.164 if it is valid. The country of the SIM
- * associated with the call is used to determine the country.
+ * Formats the number of the {@code call} to E.164 if it is valid. If the number for the call does
+ * not contain a country code, then the current location as defined by {@link
+ * GeoUtil#getCurrentCountryIso(Context)} is used.
*
- * <p>If the number cannot be formatted (because for example it is invalid or the country cannot
- * be determined), returns {@link Optional#absent()}.
+ * <p>If the number cannot be formatted (because for example it is invalid), returns {@link
+ * Optional#absent()}.
*/
@WorkerThread
public static Optional<String> getValidE164Number(Context appContext, Call call) {
@@ -107,23 +106,7 @@ public class TelecomCallUtil {
if (TextUtils.isEmpty(rawNumber)) {
return Optional.absent();
}
- Optional<String> countryCode = getCountryCode(appContext, call);
- if (!countryCode.isPresent()) {
- LogUtil.w("TelecomCallUtil.getValidE164Number", "couldn't find a country code for call");
- return Optional.absent();
- }
- return Optional.fromNullable(PhoneNumberUtils.formatNumberToE164(rawNumber, countryCode.get()));
- }
-
- @WorkerThread
- public static Optional<String> getCountryCode(Context appContext, Call call) {
- Assert.isWorkerThread();
- PhoneAccountHandle phoneAccountHandle = call.getDetails().getAccountHandle();
- Optional<SubscriptionInfo> subscriptionInfo =
- TelecomUtil.getSubscriptionInfo(appContext, phoneAccountHandle);
- if (subscriptionInfo.isPresent() && subscriptionInfo.get().getCountryIso() != null) {
- return Optional.of(subscriptionInfo.get().getCountryIso().toUpperCase(Locale.US));
- }
- return Optional.absent();
+ return Optional.fromNullable(
+ PhoneNumberUtils.formatNumberToE164(rawNumber, GeoUtil.getCurrentCountryIso(appContext)));
}
}