summaryrefslogtreecommitdiffstats
path: root/phone/src/com/android/phone2/OutgoingCallBroadcaster.java
diff options
context:
space:
mode:
Diffstat (limited to 'phone/src/com/android/phone2/OutgoingCallBroadcaster.java')
-rw-r--r--phone/src/com/android/phone2/OutgoingCallBroadcaster.java51
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.