summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNancy Chen <nancychen@google.com>2014-10-13 17:45:27 -0700
committerNancy Chen <nancychen@google.com>2014-10-16 14:04:32 -0700
commit49243b1425c0de41ce86685208192c4f93789b05 (patch)
treeb124f44e9defebfbaaa9d422f12c3e7d1d394d58
parenta40e32c8253f16d954d3dce3986abc62a7b45748 (diff)
Use the phone account when checking if a number is a voicemail number.
Currently when checking if a number is a voicemail number, we are checking it against the voicemail number of the default phone account, which results in a non-default voicemail number incorrectly being identified as a regular phone number. Bug: 17925501 Change-Id: Id73ff399467e2446a58c58e6211d1ec1d1f20b30
-rw-r--r--InCallUI/src/com/android/incallui/CallButtonPresenter.java8
-rw-r--r--InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java3
-rw-r--r--InCallUI/src/com/android/incallui/CallerInfoUtils.java13
3 files changed, 17 insertions, 7 deletions
diff --git a/InCallUI/src/com/android/incallui/CallButtonPresenter.java b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
index ca4eb8838..0d7d88fcf 100644
--- a/InCallUI/src/com/android/incallui/CallButtonPresenter.java
+++ b/InCallUI/src/com/android/incallui/CallButtonPresenter.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.telecom.AudioState;
import android.telecom.InCallService.VideoCall;
import android.telecom.PhoneCapabilities;
+import android.telecom.TelecomManager;
import android.telecom.VideoProfile;
@@ -83,9 +84,10 @@ public class CallButtonPresenter extends Presenter<CallButtonPresenter.CallButto
// OUTGOING. We may want to do that once we start showing "Voice mail" label on
// the dialpad too.)
if (ui != null) {
- if (oldState == InCallState.OUTGOING && mCall != null
- && PhoneNumberUtils.isVoiceMailNumber(mCall.getNumber())) {
- ui.displayDialpad(true /* show */, true /* animate */);
+ if (oldState == InCallState.OUTGOING && mCall != null) {
+ if (CallerInfoUtils.isVoiceMailNumber(ui.getContext(), mCall)) {
+ ui.displayDialpad(true /* show */, true /* animate */);
+ }
}
}
} else if (newState == InCallState.INCOMING) {
diff --git a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
index 9a675c132..bd766d675 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoAsyncQuery.java
@@ -365,8 +365,7 @@ public class CallerInfoAsyncQuery {
// check to see if these are recognized numbers, and use shortcuts if we can.
if (PhoneNumberUtils.isLocalEmergencyNumber(context, info.phoneNumber)) {
cw.event = EVENT_EMERGENCY_NUMBER;
- } else if (info.isVoiceMailNumber()
- || PhoneNumberUtils.isVoiceMailNumber(info.phoneNumber)) {
+ } else if (info.isVoiceMailNumber()) {
cw.event = EVENT_VOICEMAIL_NUMBER;
} else {
cw.event = EVENT_NEW_QUERY;
diff --git a/InCallUI/src/com/android/incallui/CallerInfoUtils.java b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
index 9fd45e413..5693db092 100644
--- a/InCallUI/src/com/android/incallui/CallerInfoUtils.java
+++ b/InCallUI/src/com/android/incallui/CallerInfoUtils.java
@@ -6,6 +6,7 @@ import android.content.Loader.OnLoadCompleteListener;
import android.net.Uri;
import android.telecom.PhoneAccount;
import android.telecom.TelecomManager;
+import android.telephony.PhoneNumberUtils;
import android.text.TextUtils;
import android.util.Log;
@@ -74,14 +75,22 @@ public class CallerInfoUtils {
// Because the InCallUI is immediately launched before the call is connected, occasionally
// a voicemail call will be passed to InCallUI as a "voicemail:" URI without a number.
// This call should still be handled as a voicemail call.
- if (call.getHandle() != null &&
- PhoneAccount.SCHEME_VOICEMAIL.equals(call.getHandle().getScheme())) {
+ if ((call.getHandle() != null &&
+ PhoneAccount.SCHEME_VOICEMAIL.equals(call.getHandle().getScheme())) ||
+ isVoiceMailNumber(context, call)) {
info.markAsVoiceMail(context);
}
return info;
}
+ public static boolean isVoiceMailNumber(Context context, Call call) {
+ TelecomManager telecomManager =
+ (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+ return telecomManager.isVoiceMailNumber(
+ call.getTelecommCall().getDetails().getAccountHandle(), call.getNumber());
+ }
+
/**
* Handles certain "corner cases" for CNAP. When we receive weird phone numbers
* from the network to indicate different number presentations, convert them to