Merge change Ie5df08ef into eclair-mr2

* changes:
  Let PLUS occur once anywhere in dial-str network portion.
This commit is contained in:
Android (Google) Code Review
2009-10-21 03:27:14 -04:00
7 changed files with 108 additions and 11 deletions

View File

@@ -206,6 +206,42 @@ public class PhoneNumberUtils
return ret.toString();
}
/**
* Extracts the network address portion and canonicalize.
*
* This function is equivalent to extractNetworkPortion(), except
* for allowing the PLUS character to occur at arbitrary positions
* in the address portion, not just the first position.
*
* @hide
*/
public static String extractNetworkPortionAlt(String phoneNumber) {
if (phoneNumber == null) {
return null;
}
int len = phoneNumber.length();
StringBuilder ret = new StringBuilder(len);
boolean haveSeenPlus = false;
for (int i = 0; i < len; i++) {
char c = phoneNumber.charAt(i);
if (c == '+') {
if (haveSeenPlus) {
continue;
}
haveSeenPlus = true;
}
if (isDialable(c)) {
ret.append(c);
} else if (isStartsPostDial (c)) {
break;
}
}
return ret.toString();
}
/**
* Strips separators from a phone number string.
* @param phoneNumber phone number to strip.
@@ -590,7 +626,7 @@ public class PhoneNumberUtils
*/
public static String
toCallerIDMinMatch(String phoneNumber) {
String np = extractNetworkPortion(phoneNumber);
String np = extractNetworkPortionAlt(phoneNumber);
return internalGetStrippedReversed(np, MIN_MATCH);
}
@@ -603,7 +639,7 @@ public class PhoneNumberUtils
*/
public static String
getStrippedReversed(String phoneNumber) {
String np = extractNetworkPortion(phoneNumber);
String np = extractNetworkPortionAlt(phoneNumber);
if (np == null) return null;
@@ -1247,7 +1283,7 @@ public class PhoneNumberUtils
// Strip the separators from the number before comparing it
// to the list.
number = extractNetworkPortion(number);
number = extractNetworkPortionAlt(number);
// retrieve the list of emergency numbers
String numbers = SystemProperties.get("ro.ril.ecclist");
@@ -1290,7 +1326,7 @@ public class PhoneNumberUtils
// Strip the separators from the number before comparing it
// to the list.
number = extractNetworkPortion(number);
number = extractNetworkPortionAlt(number);
// compare tolerates null so we need to make sure that we
// don't return true when both are null.

View File

@@ -73,8 +73,7 @@ public class DriverCall implements Comparable {
if (p.hasMore()) {
// Some lame implementations return strings
// like "NOT AVAILABLE" in the CLCC line
ret.number = PhoneNumberUtils.extractNetworkPortion(
p.nextString());
ret.number = PhoneNumberUtils.extractNetworkPortionAlt(p.nextString());
if (ret.number.length() == 0) {
ret.number = null;

View File

@@ -1317,7 +1317,7 @@ public class CDMAPhone extends PhoneBase {
@Override
public boolean isOtaSpNumber(String dialStr){
boolean isOtaSpNum = false;
String dialableStr = PhoneNumberUtils.extractNetworkPortion(dialStr);
String dialableStr = PhoneNumberUtils.extractNetworkPortionAlt(dialStr);
if (dialableStr != null) {
isOtaSpNum = isIs683OtaSpDialStr(dialableStr);
if (isOtaSpNum == false) {

View File

@@ -154,7 +154,7 @@ public class CdmaConnection extends Connection {
dialString = formatDialString(dialString);
Log.d(LOG_TAG, "[CDMAConn] CdmaConnection:formated dialString=" + dialString);
this.address = PhoneNumberUtils.extractNetworkPortion(dialString);
this.address = PhoneNumberUtils.extractNetworkPortionAlt(dialString);
this.postDialString = PhoneNumberUtils.extractPostDialPortion(dialString);
index = -1;

View File

@@ -729,7 +729,7 @@ public class GSMPhone extends PhoneBase {
}
// Only look at the Network portion for mmi
String networkPortion = PhoneNumberUtils.extractNetworkPortion(newDialString);
String networkPortion = PhoneNumberUtils.extractNetworkPortionAlt(newDialString);
GsmMmiCode mmi = GsmMmiCode.newFromDialString(networkPortion, this);
if (LOCAL_DEBUG) Log.d(LOG_TAG,
"dialing w/ mmi '" + mmi + "'...");

View File

@@ -144,7 +144,7 @@ public class GsmConnection extends Connection {
this.dialString = dialString;
this.address = PhoneNumberUtils.extractNetworkPortion(dialString);
this.address = PhoneNumberUtils.extractNetworkPortionAlt(dialString);
this.postDialString = PhoneNumberUtils.extractPostDialPortion(dialString);
index = -1;

View File

@@ -25,7 +25,7 @@ import junit.framework.TestCase;
public class PhoneNumberUtilsTest extends TestCase {
@SmallTest
public void testA() throws Exception {
public void testExtractNetworkPortion() throws Exception {
assertEquals(
"+17005554141",
PhoneNumberUtils.extractNetworkPortion("+17005554141")
@@ -180,6 +180,68 @@ public class PhoneNumberUtilsTest extends TestCase {
assertNull(PhoneNumberUtils.stringFromStringAndTOA(null, 1));
}
@SmallTest
public void testExtractNetworkPortionAlt() throws Exception {
assertEquals(
"+17005554141",
PhoneNumberUtils.extractNetworkPortionAlt("+17005554141")
);
assertEquals(
"+17005554141",
PhoneNumberUtils.extractNetworkPortionAlt("+1 (700).555-4141")
);
assertEquals(
"17005554141",
PhoneNumberUtils.extractNetworkPortionAlt("1 (700).555-4141")
);
// This may seem wrong, but it's probably ok
assertEquals(
"17005554141*#",
PhoneNumberUtils.extractNetworkPortionAlt("1 (700).555-4141*#")
);
assertEquals(
"170055541NN",
PhoneNumberUtils.extractNetworkPortionAlt("1 (700).555-41NN")
);
assertEquals(
"170055541NN",
PhoneNumberUtils.extractNetworkPortionAlt("1 (700).555-41NN,1234")
);
assertEquals(
"170055541NN",
PhoneNumberUtils.extractNetworkPortionAlt("1 (700).555-41NN;1234")
);
// An MMI string is unperterbed, even though it contains a
// (valid in this case) embedded +
assertEquals(
"**21**+17005554141#",
PhoneNumberUtils.extractNetworkPortionAlt("**21**+17005554141#")
);
assertEquals(
"*31#+447966164208",
PhoneNumberUtils.extractNetworkPortionAlt("*31#+447966164208")
);
assertEquals(
"*31#+447966164208",
PhoneNumberUtils.extractNetworkPortionAlt("*31# (+44) 79 6616 4208")
);
assertEquals("", PhoneNumberUtils.extractNetworkPortionAlt(""));
assertEquals("", PhoneNumberUtils.extractNetworkPortionAlt(",1234"));
assertNull(PhoneNumberUtils.extractNetworkPortionAlt(null));
}
@SmallTest
public void testB() throws Exception {
assertEquals("", PhoneNumberUtils.extractPostDialPortion("+17005554141"));