summaryrefslogtreecommitdiffstats
path: root/telephony/java/android
diff options
context:
space:
mode:
authorNicolas Catania <niko@google.com>2009-09-15 18:32:02 -0700
committerNicolas Catania <niko@google.com>2009-09-16 11:11:05 -0700
commit60d45f0f0320801a16db2ad038453c098e98966c (patch)
treec8f71ada93307d98f6192fd568bd244ac6734ada /telephony/java/android
parent46ad796186bdca8bac75607340aa0fac0c34a9d8 (diff)
downloadframeworks_base-60d45f0f0320801a16db2ad038453c098e98966c.zip
frameworks_base-60d45f0f0320801a16db2ad038453c098e98966c.tar.gz
frameworks_base-60d45f0f0320801a16db2ad038453c098e98966c.tar.bz2
Added a field to track if the call is to a voicemail instance.
Refactored common code between CallerInfo and CallerInfoAsyncQuery that deal with voicemail number comparison. In CallerInfo.java added a new field mIsVoiceMail to indicate this is a voicemail call. Added a new method to convert the CallerInfo into a VM instance. Added a new method to generate a debug string from an instance. PhoneNumberUtils has a new method "isVoiceMailNumber" to check if a number is a VM one. I left the method as hidden. Previously any security exception failure was cached in a static variable. I removed that and privilege the optmistic scenario. I am not sure if the security exception is only for the 'regular' telephony layer and if it applies if a 3rd party VM app is installed (e.g googlevoice), hence i removed the cashing to make sure we can pick up new voicemail providers when installed/enabled/disabled. Bug:2112640
Diffstat (limited to 'telephony/java/android')
-rw-r--r--telephony/java/android/telephony/PhoneNumberUtils.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index 4368464..2672c6d 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -129,6 +129,8 @@ public class PhoneNumberUtils
return uri.getSchemeSpecificPart();
}
+ // TODO: We don't check for SecurityException here (requires
+ // READ_PHONE_STATE permission).
if (scheme.equals("voicemail")) {
return TelephonyManager.getDefault().getVoiceMailNumber();
}
@@ -1179,6 +1181,35 @@ public class PhoneNumberUtils
}
/**
+ * isVoiceMailNumber: checks a given number against the voicemail
+ * number provided by the RIL and SIM card. The caller must have
+ * the READ_PHONE_STATE credential.
+ *
+ * @param number the number to look up.
+ * @return true if the number is in the list of voicemail. False
+ * otherwise, including if the caller does not have the permission
+ * to read the VM number.
+ * @hide TODO: pending API Council approval
+ */
+ public static boolean isVoiceMailNumber(String number) {
+ String vmNumber;
+
+ try {
+ vmNumber = TelephonyManager.getDefault().getVoiceMailNumber();
+ } catch (SecurityException ex) {
+ return false;
+ }
+
+ // Strip the separators from the number before comparing it
+ // to the list.
+ number = extractNetworkPortion(number);
+
+ // compare tolerates null so we need to make sure that we
+ // don't return true when both are null.
+ return !TextUtils.isEmpty(number) && compare(number, vmNumber);
+ }
+
+ /**
* Translates any alphabetic letters (i.e. [A-Za-z]) in the
* specified phone number into the equivalent numeric digits,
* according to the phone keypad letter mapping described in