diff options
Diffstat (limited to 'phone/src/com/android/phone2/OutgoingCallBroadcaster.java')
-rw-r--r-- | phone/src/com/android/phone2/OutgoingCallBroadcaster.java | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/phone/src/com/android/phone2/OutgoingCallBroadcaster.java b/phone/src/com/android/phone2/OutgoingCallBroadcaster.java index 524f7b1..0236645 100644 --- a/phone/src/com/android/phone2/OutgoingCallBroadcaster.java +++ b/phone/src/com/android/phone2/OutgoingCallBroadcaster.java @@ -199,12 +199,15 @@ public class OutgoingCallBroadcaster extends Activity { String action = intent.getAction(); String number = PhoneNumberUtils.getNumberFromIntent(intent, this); Log.w(TAG, "getNumberFromIntent(): " + intent.getData() + " --> " + number); - /* if (number != null) { - number = PhoneNumberUtils.convertKeypadLettersToDigits(number); - number = PhoneNumberUtils.stripSeparators(number); + // TODO: SIP: integrate this to PhoneApp later + if (!isUri(number)) { + number = PhoneNumberUtils.convertKeypadLettersToDigits(number); + number = PhoneNumberUtils.stripSeparators(number); + } else { + number = stripSeparators(number); + } } - */ final boolean emergencyNumber = (number != null) && PhoneNumberUtils.isEmergencyNumber(number); @@ -318,6 +321,46 @@ public class OutgoingCallBroadcaster extends Activity { // The receiver will finish our activity when it finally runs. } + private static final char PAUSE = PhoneNumberUtils.PAUSE; + private static final char WAIT = PhoneNumberUtils.WAIT; + private static final char WILD = PhoneNumberUtils.WILD; + + // TODO: SIP: move isUri() to PhoneNumberUtils later + // TODO: SIP: fix the check; how do we tell if it's a regular phone number + // or a username in a SIP URI + static boolean isUri(String phoneNumber) { + if (TextUtils.isEmpty(phoneNumber)) return false; + if (phoneNumber.contains("@")) return true; + char c = phoneNumber.charAt(0); + if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')) { + return true; + } else { + return false; + } + } + + private static String stripSeparators(String phoneNumber) { + if (phoneNumber == null) { + return null; + } + int len = phoneNumber.length(); + StringBuilder ret = new StringBuilder(len); + + for (int i = 0; i < len; i++) { + char c = phoneNumber.charAt(i); + if (isNonSeparator(c)) { + ret.append(c); + } + } + + return ret.toString(); + } + + private static boolean isNonSeparator(char c) { + return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '_' + || c == '.' || c == '@' || PhoneNumberUtils.isNonSeparator(c); + } + // Implement onConfigurationChanged() purely for debugging purposes, // to make sure that the android:configChanges element in our manifest // is working properly. |