/framework/java/jd-gui/android/telephony/PhoneNumberUtils.java

https://bitbucket.org/chameleonos/miui_frameworks · Java · 2128 lines · 2029 code · 95 blank · 4 comment · 640 complexity · f090c4c9a10ac11d45764e2b9e8af74d MD5 · raw file

Large files are truncated click here to view the full file

  1. package android.telephony;
  2. import android.annotation.MiuiHook;
  3. import android.annotation.MiuiHook.MiuiHookType;
  4. import android.content.ContentResolver;
  5. import android.content.Context;
  6. import android.content.Intent;
  7. import android.content.res.Configuration;
  8. import android.content.res.Resources;
  9. import android.database.Cursor;
  10. import android.location.Country;
  11. import android.location.CountryDetector;
  12. import android.net.Uri;
  13. import android.os.SystemProperties;
  14. import android.text.Editable;
  15. import android.text.SpannableStringBuilder;
  16. import android.text.TextUtils;
  17. import android.util.Log;
  18. import android.util.SparseIntArray;
  19. import com.android.i18n.phonenumbers.NumberParseException;
  20. import com.android.i18n.phonenumbers.PhoneNumberUtil;
  21. import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
  22. import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
  23. import com.android.i18n.phonenumbers.ShortNumberUtil;
  24. import java.util.Locale;
  25. import java.util.regex.Matcher;
  26. import java.util.regex.Pattern;
  27. public class PhoneNumberUtils
  28. {
  29. private static final int CCC_LENGTH = 0;
  30. private static final String CLIR_OFF = "#31#";
  31. private static final String CLIR_ON = "*31#";
  32. private static final boolean[] COUNTRY_CALLING_CALL;
  33. private static final boolean DBG = false;
  34. public static final int FORMAT_JAPAN = 2;
  35. public static final int FORMAT_NANP = 1;
  36. public static final int FORMAT_UNKNOWN = 0;
  37. private static final Pattern GLOBAL_PHONE_NUMBER_PATTERN = Pattern.compile("[\\+]?[0-9.-]+");
  38. private static final SparseIntArray KEYPAD_MAP;
  39. static final String LOG_TAG = "PhoneNumberUtils";
  40. static final int MIN_MATCH = 7;
  41. private static final String[] NANP_COUNTRIES;
  42. private static final String NANP_IDP_STRING = "011";
  43. private static final int NANP_LENGTH = 10;
  44. private static final int NANP_STATE_DASH = 4;
  45. private static final int NANP_STATE_DIGIT = 1;
  46. private static final int NANP_STATE_ONE = 3;
  47. private static final int NANP_STATE_PLUS = 2;
  48. public static final char PAUSE = ',';
  49. private static final char PLUS_SIGN_CHAR = '+';
  50. private static final String PLUS_SIGN_STRING = "+";
  51. public static final int TOA_International = 145;
  52. public static final int TOA_Unknown = 129;
  53. public static final char WAIT = ';';
  54. public static final char WILD = 'N';
  55. static
  56. {
  57. String[] arrayOfString = new String[24];
  58. arrayOfString[0] = "US";
  59. arrayOfString[1] = "CA";
  60. arrayOfString[2] = "AS";
  61. arrayOfString[3] = "AI";
  62. arrayOfString[4] = "AG";
  63. arrayOfString[5] = "BS";
  64. arrayOfString[6] = "BB";
  65. arrayOfString[7] = "BM";
  66. arrayOfString[8] = "VG";
  67. arrayOfString[9] = "KY";
  68. arrayOfString[10] = "DM";
  69. arrayOfString[11] = "DO";
  70. arrayOfString[12] = "GD";
  71. arrayOfString[13] = "GU";
  72. arrayOfString[14] = "JM";
  73. arrayOfString[15] = "PR";
  74. arrayOfString[16] = "MS";
  75. arrayOfString[17] = "MP";
  76. arrayOfString[18] = "KN";
  77. arrayOfString[19] = "LC";
  78. arrayOfString[20] = "VC";
  79. arrayOfString[21] = "TT";
  80. arrayOfString[22] = "TC";
  81. arrayOfString[23] = "VI";
  82. NANP_COUNTRIES = arrayOfString;
  83. KEYPAD_MAP = new SparseIntArray();
  84. KEYPAD_MAP.put(97, 50);
  85. KEYPAD_MAP.put(98, 50);
  86. KEYPAD_MAP.put(99, 50);
  87. KEYPAD_MAP.put(65, 50);
  88. KEYPAD_MAP.put(66, 50);
  89. KEYPAD_MAP.put(67, 50);
  90. KEYPAD_MAP.put(100, 51);
  91. KEYPAD_MAP.put(101, 51);
  92. KEYPAD_MAP.put(102, 51);
  93. KEYPAD_MAP.put(68, 51);
  94. KEYPAD_MAP.put(69, 51);
  95. KEYPAD_MAP.put(70, 51);
  96. KEYPAD_MAP.put(103, 52);
  97. KEYPAD_MAP.put(104, 52);
  98. KEYPAD_MAP.put(105, 52);
  99. KEYPAD_MAP.put(71, 52);
  100. KEYPAD_MAP.put(72, 52);
  101. KEYPAD_MAP.put(73, 52);
  102. KEYPAD_MAP.put(106, 53);
  103. KEYPAD_MAP.put(107, 53);
  104. KEYPAD_MAP.put(108, 53);
  105. KEYPAD_MAP.put(74, 53);
  106. KEYPAD_MAP.put(75, 53);
  107. KEYPAD_MAP.put(76, 53);
  108. KEYPAD_MAP.put(109, 54);
  109. KEYPAD_MAP.put(110, 54);
  110. KEYPAD_MAP.put(111, 54);
  111. KEYPAD_MAP.put(77, 54);
  112. KEYPAD_MAP.put(78, 54);
  113. KEYPAD_MAP.put(79, 54);
  114. KEYPAD_MAP.put(112, 55);
  115. KEYPAD_MAP.put(113, 55);
  116. KEYPAD_MAP.put(114, 55);
  117. KEYPAD_MAP.put(115, 55);
  118. KEYPAD_MAP.put(80, 55);
  119. KEYPAD_MAP.put(81, 55);
  120. KEYPAD_MAP.put(82, 55);
  121. KEYPAD_MAP.put(83, 55);
  122. KEYPAD_MAP.put(116, 56);
  123. KEYPAD_MAP.put(117, 56);
  124. KEYPAD_MAP.put(118, 56);
  125. KEYPAD_MAP.put(84, 56);
  126. KEYPAD_MAP.put(85, 56);
  127. KEYPAD_MAP.put(86, 56);
  128. KEYPAD_MAP.put(119, 57);
  129. KEYPAD_MAP.put(120, 57);
  130. KEYPAD_MAP.put(121, 57);
  131. KEYPAD_MAP.put(122, 57);
  132. KEYPAD_MAP.put(87, 57);
  133. KEYPAD_MAP.put(88, 57);
  134. KEYPAD_MAP.put(89, 57);
  135. KEYPAD_MAP.put(90, 57);
  136. boolean[] arrayOfBoolean = new boolean[100];
  137. arrayOfBoolean[0] = 1;
  138. arrayOfBoolean[1] = 1;
  139. arrayOfBoolean[2] = 0;
  140. arrayOfBoolean[3] = 0;
  141. arrayOfBoolean[4] = 0;
  142. arrayOfBoolean[5] = 0;
  143. arrayOfBoolean[6] = 0;
  144. arrayOfBoolean[7] = 1;
  145. arrayOfBoolean[8] = 0;
  146. arrayOfBoolean[9] = 0;
  147. arrayOfBoolean[10] = 0;
  148. arrayOfBoolean[11] = 0;
  149. arrayOfBoolean[12] = 0;
  150. arrayOfBoolean[13] = 0;
  151. arrayOfBoolean[14] = 0;
  152. arrayOfBoolean[15] = 0;
  153. arrayOfBoolean[16] = 0;
  154. arrayOfBoolean[17] = 0;
  155. arrayOfBoolean[18] = 0;
  156. arrayOfBoolean[19] = 0;
  157. arrayOfBoolean[20] = 1;
  158. arrayOfBoolean[21] = 0;
  159. arrayOfBoolean[22] = 0;
  160. arrayOfBoolean[23] = 0;
  161. arrayOfBoolean[24] = 0;
  162. arrayOfBoolean[25] = 0;
  163. arrayOfBoolean[26] = 0;
  164. arrayOfBoolean[27] = 1;
  165. arrayOfBoolean[28] = 1;
  166. arrayOfBoolean[29] = 0;
  167. arrayOfBoolean[30] = 1;
  168. arrayOfBoolean[31] = 1;
  169. arrayOfBoolean[32] = 1;
  170. arrayOfBoolean[33] = 1;
  171. arrayOfBoolean[34] = 1;
  172. arrayOfBoolean[35] = 0;
  173. arrayOfBoolean[36] = 1;
  174. arrayOfBoolean[37] = 0;
  175. arrayOfBoolean[38] = 0;
  176. arrayOfBoolean[39] = 1;
  177. arrayOfBoolean[40] = 1;
  178. arrayOfBoolean[41] = 0;
  179. arrayOfBoolean[42] = 0;
  180. arrayOfBoolean[43] = 1;
  181. arrayOfBoolean[44] = 1;
  182. arrayOfBoolean[45] = 1;
  183. arrayOfBoolean[46] = 1;
  184. arrayOfBoolean[47] = 1;
  185. arrayOfBoolean[48] = 1;
  186. arrayOfBoolean[49] = 1;
  187. arrayOfBoolean[50] = 0;
  188. arrayOfBoolean[51] = 1;
  189. arrayOfBoolean[52] = 1;
  190. arrayOfBoolean[53] = 1;
  191. arrayOfBoolean[54] = 1;
  192. arrayOfBoolean[55] = 1;
  193. arrayOfBoolean[56] = 1;
  194. arrayOfBoolean[57] = 1;
  195. arrayOfBoolean[58] = 1;
  196. arrayOfBoolean[59] = 0;
  197. arrayOfBoolean[60] = 1;
  198. arrayOfBoolean[61] = 1;
  199. arrayOfBoolean[62] = 1;
  200. arrayOfBoolean[63] = 1;
  201. arrayOfBoolean[64] = 1;
  202. arrayOfBoolean[65] = 1;
  203. arrayOfBoolean[66] = 1;
  204. arrayOfBoolean[67] = 0;
  205. arrayOfBoolean[68] = 0;
  206. arrayOfBoolean[69] = 0;
  207. arrayOfBoolean[70] = 0;
  208. arrayOfBoolean[71] = 0;
  209. arrayOfBoolean[72] = 0;
  210. arrayOfBoolean[73] = 0;
  211. arrayOfBoolean[74] = 0;
  212. arrayOfBoolean[75] = 0;
  213. arrayOfBoolean[76] = 0;
  214. arrayOfBoolean[77] = 0;
  215. arrayOfBoolean[78] = 0;
  216. arrayOfBoolean[79] = 0;
  217. arrayOfBoolean[80] = 0;
  218. arrayOfBoolean[81] = 1;
  219. arrayOfBoolean[82] = 1;
  220. arrayOfBoolean[83] = 1;
  221. arrayOfBoolean[84] = 1;
  222. arrayOfBoolean[85] = 0;
  223. arrayOfBoolean[86] = 1;
  224. arrayOfBoolean[87] = 0;
  225. arrayOfBoolean[88] = 0;
  226. arrayOfBoolean[89] = 1;
  227. arrayOfBoolean[90] = 1;
  228. arrayOfBoolean[91] = 1;
  229. arrayOfBoolean[92] = 1;
  230. arrayOfBoolean[93] = 1;
  231. arrayOfBoolean[94] = 1;
  232. arrayOfBoolean[95] = 1;
  233. arrayOfBoolean[96] = 0;
  234. arrayOfBoolean[97] = 0;
  235. arrayOfBoolean[98] = 1;
  236. arrayOfBoolean[99] = 0;
  237. COUNTRY_CALLING_CALL = arrayOfBoolean;
  238. }
  239. private static String appendPwCharBackToOrigDialStr(int paramInt, String paramString1, String paramString2)
  240. {
  241. if (paramInt == 1);
  242. for (String str = paramString1 + paramString2.charAt(0); ; str = paramString1.concat(paramString2.substring(0, paramInt)))
  243. return str;
  244. }
  245. private static char bcdToChar(byte paramByte)
  246. {
  247. char c;
  248. if (paramByte < 10)
  249. c = (char)(paramByte + 48);
  250. while (true)
  251. {
  252. return c;
  253. switch (paramByte)
  254. {
  255. default:
  256. c = '\000';
  257. break;
  258. case 10:
  259. c = '*';
  260. break;
  261. case 11:
  262. c = '#';
  263. break;
  264. case 12:
  265. c = ',';
  266. break;
  267. case 13:
  268. c = 'N';
  269. }
  270. }
  271. }
  272. @MiuiHook(MiuiHook.MiuiHookType.NEW_METHOD)
  273. static int callIndexOfLastNetworkChar(String paramString)
  274. {
  275. return indexOfLastNetworkChar(paramString);
  276. }
  277. public static String calledPartyBCDFragmentToString(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  278. {
  279. StringBuilder localStringBuilder = new StringBuilder(paramInt2 * 2);
  280. internalCalledPartyBCDFragmentToString(localStringBuilder, paramArrayOfByte, paramInt1, paramInt2);
  281. return localStringBuilder.toString();
  282. }
  283. public static String calledPartyBCDToString(byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  284. {
  285. int i = 0;
  286. StringBuilder localStringBuilder = new StringBuilder(1 + paramInt2 * 2);
  287. if (paramInt2 < 2);
  288. for (String str1 = ""; ; str1 = "")
  289. {
  290. return str1;
  291. if ((0xF0 & paramArrayOfByte[paramInt1]) == 144)
  292. i = 1;
  293. internalCalledPartyBCDFragmentToString(localStringBuilder, paramArrayOfByte, paramInt1 + 1, paramInt2 - 1);
  294. if ((i == 0) || (localStringBuilder.length() != 0))
  295. break;
  296. }
  297. String str2;
  298. Matcher localMatcher1;
  299. if (i != 0)
  300. {
  301. str2 = localStringBuilder.toString();
  302. localMatcher1 = Pattern.compile("(^[#*])(.*)([#*])(.*)(#)$").matcher(str2);
  303. if (!localMatcher1.matches())
  304. break label274;
  305. if (!"".equals(localMatcher1.group(2)))
  306. break label194;
  307. localStringBuilder = new StringBuilder();
  308. localStringBuilder.append(localMatcher1.group(1));
  309. localStringBuilder.append(localMatcher1.group(3));
  310. localStringBuilder.append(localMatcher1.group(4));
  311. localStringBuilder.append(localMatcher1.group(5));
  312. localStringBuilder.append("+");
  313. }
  314. while (true)
  315. {
  316. str1 = localStringBuilder.toString();
  317. break;
  318. label194: localStringBuilder = new StringBuilder();
  319. localStringBuilder.append(localMatcher1.group(1));
  320. localStringBuilder.append(localMatcher1.group(2));
  321. localStringBuilder.append(localMatcher1.group(3));
  322. localStringBuilder.append("+");
  323. localStringBuilder.append(localMatcher1.group(4));
  324. localStringBuilder.append(localMatcher1.group(5));
  325. continue;
  326. label274: Matcher localMatcher2 = Pattern.compile("(^[#*])(.*)([#*])(.*)").matcher(str2);
  327. if (localMatcher2.matches())
  328. {
  329. localStringBuilder = new StringBuilder();
  330. localStringBuilder.append(localMatcher2.group(1));
  331. localStringBuilder.append(localMatcher2.group(2));
  332. localStringBuilder.append(localMatcher2.group(3));
  333. localStringBuilder.append("+");
  334. localStringBuilder.append(localMatcher2.group(4));
  335. }
  336. else
  337. {
  338. localStringBuilder = new StringBuilder();
  339. localStringBuilder.append('+');
  340. localStringBuilder.append(str2);
  341. }
  342. }
  343. }
  344. public static String cdmaCheckAndProcessPlusCode(String paramString)
  345. {
  346. if ((!TextUtils.isEmpty(paramString)) && (isReallyDialable(paramString.charAt(0))) && (isNonSeparator(paramString)))
  347. {
  348. String str1 = SystemProperties.get("gsm.operator.iso-country", "");
  349. String str2 = SystemProperties.get("gsm.sim.operator.iso-country", "");
  350. if ((!TextUtils.isEmpty(str1)) && (!TextUtils.isEmpty(str2)))
  351. paramString = cdmaCheckAndProcessPlusCodeByNumberFormat(paramString, getFormatTypeFromCountryCode(str1), getFormatTypeFromCountryCode(str2));
  352. }
  353. return paramString;
  354. }
  355. public static String cdmaCheckAndProcessPlusCodeByNumberFormat(String paramString, int paramInt1, int paramInt2)
  356. {
  357. Object localObject = paramString;
  358. String str2;
  359. String str3;
  360. int i;
  361. if ((paramString != null) && (paramString.lastIndexOf("+") != -1))
  362. {
  363. if ((paramInt1 != paramInt2) || (paramInt1 != 1))
  364. break label166;
  365. String str1 = paramString;
  366. localObject = null;
  367. str2 = processPlusCodeWithinNanp(extractNetworkPortion(str1));
  368. if (TextUtils.isEmpty(str2))
  369. break label133;
  370. if (localObject != null)
  371. break label123;
  372. localObject = str2;
  373. str3 = extractPostDialPortion(str1);
  374. if (!TextUtils.isEmpty(str3))
  375. {
  376. i = findDialableIndexFromPostDialStr(str3);
  377. if (i < 1)
  378. break label145;
  379. localObject = appendPwCharBackToOrigDialStr(i, (String)localObject, str3);
  380. str1 = str3.substring(i);
  381. }
  382. label103: if ((!TextUtils.isEmpty(str3)) && (!TextUtils.isEmpty(str1)))
  383. break label164;
  384. }
  385. while (true)
  386. {
  387. paramString = (String)localObject;
  388. while (true)
  389. {
  390. return paramString;
  391. label123: localObject = ((String)localObject).concat(str2);
  392. break;
  393. label133: Log.e("checkAndProcessPlusCode: null newDialStr", str2);
  394. }
  395. label145: if (i < 0)
  396. str3 = "";
  397. Log.e("wrong postDialStr=", str3);
  398. break label103;
  399. label164: break;
  400. label166: Log.e("checkAndProcessPlusCode:non-NANP not supported", paramString);
  401. }
  402. }
  403. private static int charToBCD(char paramChar)
  404. {
  405. int i;
  406. if ((paramChar >= '0') && (paramChar <= '9'))
  407. i = paramChar + '\0*0';
  408. while (true)
  409. {
  410. return i;
  411. if (paramChar == '*')
  412. {
  413. i = 10;
  414. }
  415. else if (paramChar == '#')
  416. {
  417. i = 11;
  418. }
  419. else if (paramChar == ',')
  420. {
  421. i = 12;
  422. }
  423. else
  424. {
  425. if (paramChar != 'N')
  426. break;
  427. i = 13;
  428. }
  429. }
  430. throw new RuntimeException("invalid char for BCD " + paramChar);
  431. }
  432. private static boolean checkPrefixIsIgnorable(String paramString, int paramInt1, int paramInt2)
  433. {
  434. boolean bool = false;
  435. int i = 0;
  436. if (paramInt2 >= paramInt1)
  437. if (tryGetISODigit(paramString.charAt(paramInt2)) >= 0)
  438. if (i == 0);
  439. while (true)
  440. {
  441. return bool;
  442. i = 1;
  443. do
  444. {
  445. paramInt2--;
  446. break;
  447. }
  448. while (!isDialable(paramString.charAt(paramInt2)));
  449. continue;
  450. bool = true;
  451. }
  452. }
  453. public static boolean compare(Context paramContext, String paramString1, String paramString2)
  454. {
  455. return compare(paramString1, paramString2, paramContext.getResources().getBoolean(17891356));
  456. }
  457. public static boolean compare(String paramString1, String paramString2)
  458. {
  459. return compare(paramString1, paramString2, false);
  460. }
  461. public static boolean compare(String paramString1, String paramString2, boolean paramBoolean)
  462. {
  463. if (paramBoolean);
  464. for (boolean bool = compareStrictly(paramString1, paramString2); ; bool = compareLoosely(paramString1, paramString2))
  465. return bool;
  466. }
  467. @MiuiHook(MiuiHook.MiuiHookType.CHANGE_CODE)
  468. public static boolean compareLoosely(String paramString1, String paramString2)
  469. {
  470. int i = 0;
  471. int j = 0;
  472. boolean bool;
  473. if ((paramString1 == null) || (paramString2 == null))
  474. if (paramString1 == paramString2)
  475. bool = true;
  476. while (true)
  477. {
  478. return bool;
  479. bool = false;
  480. continue;
  481. if ((paramString1.length() == 0) || (paramString2.length() == 0))
  482. {
  483. bool = false;
  484. }
  485. else
  486. {
  487. int k = indexOfLastNetworkChar(paramString1);
  488. int m = indexOfLastNetworkChar(paramString2);
  489. int n = 0;
  490. while (true)
  491. if ((k >= 0) && (m >= 0))
  492. {
  493. int i2 = 0;
  494. char c1 = paramString1.charAt(k);
  495. if (!isDialable(c1))
  496. {
  497. k--;
  498. i2 = 1;
  499. i++;
  500. }
  501. char c2 = paramString2.charAt(m);
  502. if (!isDialable(c2))
  503. {
  504. m--;
  505. i2 = 1;
  506. j++;
  507. }
  508. if (i2 == 0)
  509. if ((c2 == c1) || (c1 == 'N') || (c2 == 'N'));
  510. }
  511. else
  512. {
  513. if (n >= 7)
  514. break label210;
  515. int i1 = Injector.getEffectiveLength(paramString1) - i;
  516. if ((i1 != Injector.getEffectiveLength(paramString2) - j) || (i1 != n))
  517. break label204;
  518. bool = true;
  519. break;
  520. k--;
  521. m--;
  522. n++;
  523. }
  524. label204: bool = false;
  525. continue;
  526. label210: if ((n >= 7) && ((k < 0) || (m < 0)))
  527. bool = true;
  528. else if ((matchIntlPrefix(paramString1, k + 1)) && (matchIntlPrefix(paramString2, m + 1)))
  529. bool = true;
  530. else if ((matchTrunkPrefix(paramString1, k + 1)) && (matchIntlPrefixAndCC(paramString2, m + 1)))
  531. bool = true;
  532. else if ((matchTrunkPrefix(paramString2, m + 1)) && (matchIntlPrefixAndCC(paramString1, k + 1)))
  533. bool = true;
  534. else
  535. bool = false;
  536. }
  537. }
  538. }
  539. public static boolean compareStrictly(String paramString1, String paramString2)
  540. {
  541. return compareStrictly(paramString1, paramString2, true);
  542. }
  543. public static boolean compareStrictly(String paramString1, String paramString2, boolean paramBoolean)
  544. {
  545. boolean bool;
  546. if ((paramString1 == null) || (paramString2 == null))
  547. if (paramString1 == paramString2)
  548. bool = true;
  549. while (true)
  550. {
  551. return bool;
  552. bool = false;
  553. continue;
  554. if ((paramString1.length() == 0) && (paramString2.length() == 0))
  555. {
  556. bool = false;
  557. }
  558. else
  559. {
  560. int i = 0;
  561. int j = 0;
  562. CountryCallingCodeAndNewIndex localCountryCallingCodeAndNewIndex1 = tryGetCountryCallingCodeAndNewIndex(paramString1, paramBoolean);
  563. CountryCallingCodeAndNewIndex localCountryCallingCodeAndNewIndex2 = tryGetCountryCallingCodeAndNewIndex(paramString2, paramBoolean);
  564. int k = 0;
  565. int m = 1;
  566. int n = 0;
  567. int i1 = 0;
  568. label121: int i4;
  569. int i5;
  570. if ((localCountryCallingCodeAndNewIndex1 != null) && (localCountryCallingCodeAndNewIndex2 != null))
  571. {
  572. if (localCountryCallingCodeAndNewIndex1.countryCallingCode != localCountryCallingCodeAndNewIndex2.countryCallingCode)
  573. {
  574. bool = false;
  575. }
  576. else
  577. {
  578. m = 0;
  579. k = 1;
  580. i = localCountryCallingCodeAndNewIndex1.newIndex;
  581. j = localCountryCallingCodeAndNewIndex2.newIndex;
  582. i4 = -1 + paramString1.length();
  583. i5 = -1 + paramString2.length();
  584. }
  585. }
  586. else
  587. {
  588. while (true)
  589. {
  590. if ((i4 < i) || (i5 < j))
  591. break label313;
  592. int i7 = 0;
  593. char c3 = paramString1.charAt(i4);
  594. char c4 = paramString2.charAt(i5);
  595. if (isSeparator(c3))
  596. {
  597. i4--;
  598. i7 = 1;
  599. }
  600. if (isSeparator(c4))
  601. {
  602. i5--;
  603. i7 = 1;
  604. }
  605. if (i7 == 0)
  606. {
  607. if (c3 != c4)
  608. {
  609. bool = false;
  610. break;
  611. if ((localCountryCallingCodeAndNewIndex1 == null) && (localCountryCallingCodeAndNewIndex2 == null))
  612. {
  613. m = 0;
  614. break label121;
  615. }
  616. if (localCountryCallingCodeAndNewIndex1 != null)
  617. i = localCountryCallingCodeAndNewIndex1.newIndex;
  618. while (true)
  619. {
  620. if (localCountryCallingCodeAndNewIndex2 == null)
  621. break label282;
  622. j = localCountryCallingCodeAndNewIndex2.newIndex;
  623. break;
  624. int i2 = tryGetTrunkPrefixOmittedIndex(paramString2, 0);
  625. if (i2 >= 0)
  626. {
  627. i = i2;
  628. n = 1;
  629. }
  630. }
  631. label282: int i3 = tryGetTrunkPrefixOmittedIndex(paramString2, 0);
  632. if (i3 < 0)
  633. break label121;
  634. j = i3;
  635. i1 = 1;
  636. break label121;
  637. }
  638. i4--;
  639. i5--;
  640. }
  641. }
  642. label313: if (m != 0)
  643. {
  644. if (((n != 0) && (i <= i4)) || (!checkPrefixIsIgnorable(paramString1, i, i4)))
  645. {
  646. if (paramBoolean)
  647. bool = compare(paramString1, paramString2, false);
  648. else
  649. bool = false;
  650. }
  651. else if (((i1 != 0) && (j <= i5)) || (!checkPrefixIsIgnorable(paramString2, i, i5)))
  652. {
  653. if (paramBoolean)
  654. {
  655. bool = compare(paramString1, paramString2, false);
  656. continue;
  657. }
  658. bool = false;
  659. }
  660. }
  661. else
  662. {
  663. int i6;
  664. if (k == 0)
  665. i6 = 1;
  666. while (true)
  667. if (i4 >= i)
  668. {
  669. char c2 = paramString1.charAt(i4);
  670. if (isDialable(c2))
  671. {
  672. if ((i6 != 0) && (tryGetISODigit(c2) == 1))
  673. i6 = 0;
  674. }
  675. else
  676. {
  677. i4--;
  678. continue;
  679. i6 = 0;
  680. continue;
  681. }
  682. bool = false;
  683. break;
  684. }
  685. while (true)
  686. if (i5 >= j)
  687. {
  688. char c1 = paramString2.charAt(i5);
  689. if (isDialable(c1))
  690. {
  691. if ((i6 != 0) && (tryGetISODigit(c1) == 1))
  692. i6 = 0;
  693. }
  694. else
  695. {
  696. i5--;
  697. continue;
  698. }
  699. bool = false;
  700. break;
  701. }
  702. bool = true;
  703. }
  704. }
  705. }
  706. }
  707. }
  708. public static String convertAndStrip(String paramString)
  709. {
  710. return stripSeparators(convertKeypadLettersToDigits(paramString));
  711. }
  712. public static String convertKeypadLettersToDigits(String paramString)
  713. {
  714. if (paramString == null);
  715. while (true)
  716. {
  717. return paramString;
  718. int i = paramString.length();
  719. if (i != 0)
  720. {
  721. char[] arrayOfChar = paramString.toCharArray();
  722. for (int j = 0; j < i; j++)
  723. {
  724. int k = arrayOfChar[j];
  725. arrayOfChar[j] = ((char)KEYPAD_MAP.get(k, k));
  726. }
  727. paramString = new String(arrayOfChar);
  728. }
  729. }
  730. }
  731. public static String convertPreDial(String paramString)
  732. {
  733. if (paramString == null);
  734. StringBuilder localStringBuilder;
  735. for (String str = null; ; str = localStringBuilder.toString())
  736. {
  737. return str;
  738. int i = paramString.length();
  739. localStringBuilder = new StringBuilder(i);
  740. int j = 0;
  741. if (j < i)
  742. {
  743. char c = paramString.charAt(j);
  744. if (isPause(c))
  745. c = ',';
  746. while (true)
  747. {
  748. localStringBuilder.append(c);
  749. j++;
  750. break;
  751. if (isToneWait(c))
  752. c = ';';
  753. }
  754. }
  755. }
  756. }
  757. public static String extractNetworkPortion(String paramString)
  758. {
  759. if (paramString == null);
  760. StringBuilder localStringBuilder;
  761. for (String str1 = null; ; str1 = localStringBuilder.toString())
  762. {
  763. return str1;
  764. int i = paramString.length();
  765. localStringBuilder = new StringBuilder(i);
  766. int j = 0;
  767. if (j < i)
  768. {
  769. char c = paramString.charAt(j);
  770. int k = Character.digit(c, 10);
  771. if (k != -1)
  772. localStringBuilder.append(k);
  773. label136:
  774. do
  775. while (true)
  776. {
  777. j++;
  778. break;
  779. if (c == '+')
  780. {
  781. String str2 = localStringBuilder.toString();
  782. if ((str2.length() == 0) || (str2.equals("*31#")) || (str2.equals("#31#")))
  783. localStringBuilder.append(c);
  784. }
  785. else
  786. {
  787. if (!isDialable(c))
  788. break label136;
  789. localStringBuilder.append(c);
  790. }
  791. }
  792. while (!isStartsPostDial(c));
  793. }
  794. }
  795. }
  796. public static String extractNetworkPortionAlt(String paramString)
  797. {
  798. if (paramString == null);
  799. StringBuilder localStringBuilder;
  800. for (String str = null; ; str = localStringBuilder.toString())
  801. {
  802. return str;
  803. int i = paramString.length();
  804. localStringBuilder = new StringBuilder(i);
  805. int j = 0;
  806. int k = 0;
  807. if (k < i)
  808. {
  809. char c = paramString.charAt(k);
  810. if (c == '+')
  811. if (j == 0);
  812. label80:
  813. do
  814. while (true)
  815. {
  816. k++;
  817. break;
  818. j = 1;
  819. if (!isDialable(c))
  820. break label80;
  821. localStringBuilder.append(c);
  822. }
  823. while (!isStartsPostDial(c));
  824. }
  825. }
  826. }
  827. public static String extractPostDialPortion(String paramString)
  828. {
  829. if (paramString == null);
  830. StringBuilder localStringBuilder;
  831. for (String str = null; ; str = localStringBuilder.toString())
  832. {
  833. return str;
  834. localStringBuilder = new StringBuilder();
  835. int i = 1 + indexOfLastNetworkChar(paramString);
  836. int j = paramString.length();
  837. while (i < j)
  838. {
  839. char c = paramString.charAt(i);
  840. if (isNonSeparator(c))
  841. localStringBuilder.append(c);
  842. i++;
  843. }
  844. }
  845. }
  846. private static int findDialableIndexFromPostDialStr(String paramString)
  847. {
  848. int i = 0;
  849. if (i < paramString.length())
  850. if (!isReallyDialable(paramString.charAt(i)));
  851. while (true)
  852. {
  853. return i;
  854. i++;
  855. break;
  856. i = -1;
  857. }
  858. }
  859. public static void formatJapaneseNumber(Editable paramEditable)
  860. {
  861. JapanesePhoneNumberFormatter.format(paramEditable);
  862. }
  863. public static void formatNanpNumber(Editable paramEditable)
  864. {
  865. int i = paramEditable.length();
  866. if (i > "+1-nnn-nnn-nnnn".length());
  867. int[] arrayOfInt;
  868. int k;
  869. int m;
  870. int n;
  871. int i1;
  872. label148: int i6;
  873. while (true)
  874. {
  875. return;
  876. if (i > 5)
  877. {
  878. CharSequence localCharSequence = paramEditable.subSequence(0, i);
  879. removeDashes(paramEditable);
  880. int j = paramEditable.length();
  881. arrayOfInt = new int[3];
  882. k = 1;
  883. m = 0;
  884. n = 0;
  885. for (i1 = 0; ; i1 = i6)
  886. {
  887. if (n >= j)
  888. break label296;
  889. switch (paramEditable.charAt(n))
  890. {
  891. case ',':
  892. case '.':
  893. case '/':
  894. default:
  895. paramEditable.replace(0, j, localCharSequence);
  896. break;
  897. case '1':
  898. if ((m != 0) && (k != 2))
  899. break label189;
  900. k = 3;
  901. i6 = i1;
  902. label179: n++;
  903. case '0':
  904. case '2':
  905. case '3':
  906. case '4':
  907. case '5':
  908. case '6':
  909. case '7':
  910. case '8':
  911. case '9':
  912. case '-':
  913. case '+':
  914. }
  915. }
  916. label189: if (k != 2)
  917. break;
  918. paramEditable.replace(0, j, localCharSequence);
  919. }
  920. }
  921. if (k == 3)
  922. {
  923. i6 = i1 + 1;
  924. arrayOfInt[i1] = n;
  925. }
  926. while (true)
  927. {
  928. k = 1;
  929. m++;
  930. break label179;
  931. if ((k != 4) && ((m == 3) || (m == 6)))
  932. {
  933. i6 = i1 + 1;
  934. arrayOfInt[i1] = n;
  935. continue;
  936. k = 4;
  937. i6 = i1;
  938. break label179;
  939. if (n != 0)
  940. break label148;
  941. k = 2;
  942. i6 = i1;
  943. break label179;
  944. label296: if (m == 7);
  945. for (int i2 = i1 - 1; ; i2 = i1)
  946. {
  947. for (int i3 = 0; i3 < i2; i3++)
  948. {
  949. int i5 = arrayOfInt[i3];
  950. paramEditable.replace(i5 + i3, i5 + i3, "-");
  951. }
  952. for (int i4 = paramEditable.length(); (i4 > 0) && (paramEditable.charAt(i4 - 1) == '-'); i4--)
  953. paramEditable.delete(i4 - 1, i4);
  954. break;
  955. }
  956. }
  957. i6 = i1;
  958. }
  959. }
  960. public static String formatNumber(String paramString)
  961. {
  962. SpannableStringBuilder localSpannableStringBuilder = new SpannableStringBuilder(paramString);
  963. formatNumber(localSpannableStringBuilder, getFormatTypeForLocale(Locale.getDefault()));
  964. return localSpannableStringBuilder.toString();
  965. }
  966. public static String formatNumber(String paramString, int paramInt)
  967. {
  968. SpannableStringBuilder localSpannableStringBuilder = new SpannableStringBuilder(paramString);
  969. formatNumber(localSpannableStringBuilder, paramInt);
  970. return localSpannableStringBuilder.toString();
  971. }
  972. public static String formatNumber(String paramString1, String paramString2)
  973. {
  974. Object localObject;
  975. if ((paramString1.startsWith("#")) || (paramString1.startsWith("*")))
  976. localObject = paramString1;
  977. while (true)
  978. {
  979. return localObject;
  980. PhoneNumberUtil localPhoneNumberUtil = PhoneNumberUtil.getInstance();
  981. localObject = null;
  982. try
  983. {
  984. String str = localPhoneNumberUtil.formatInOriginalFormat(localPhoneNumberUtil.parseAndKeepRawInput(paramString1, paramString2), paramString2);
  985. localObject = str;
  986. }
  987. catch (NumberParseException localNumberParseException)
  988. {
  989. }
  990. }
  991. }
  992. @MiuiHook(MiuiHook.MiuiHookType.CHANGE_CODE)
  993. public static String formatNumber(String paramString1, String paramString2, String paramString3)
  994. {
  995. Object localObject1 = miui.telephony.PhoneNumberUtils.removeDashesAndBlanks(paramString1);
  996. int i = ((String)localObject1).length();
  997. int j = 0;
  998. if (j < i)
  999. if (isDialable(((String)localObject1).charAt(j)));
  1000. while (true)
  1001. {
  1002. return localObject1;
  1003. j++;
  1004. break;
  1005. PhoneNumberUtil localPhoneNumberUtil = PhoneNumberUtil.getInstance();
  1006. if ((paramString2 != null) && (paramString2.length() >= 2) && (paramString2.charAt(0) == '+'));
  1007. try
  1008. {
  1009. String str = localPhoneNumberUtil.getRegionCodeForNumber(localPhoneNumberUtil.parse(paramString2, "ZZ"));
  1010. if (!TextUtils.isEmpty(str))
  1011. {
  1012. int k = normalizeNumber((String)localObject1).indexOf(paramString2.substring(1));
  1013. if (k <= 0)
  1014. paramString3 = str;
  1015. }
  1016. label114: Object localObject2 = formatNumber((String)localObject1, paramString3);
  1017. if (localObject2 != null);
  1018. while (true)
  1019. {
  1020. localObject1 = localObject2;
  1021. break;
  1022. localObject2 = localObject1;
  1023. }
  1024. }
  1025. catch (NumberParseException localNumberParseException)
  1026. {
  1027. break label114;
  1028. }
  1029. }
  1030. }
  1031. public static void formatNumber(Editable paramEditable, int paramInt)
  1032. {
  1033. int i = paramInt;
  1034. if ((paramEditable.length() > 2) && (paramEditable.charAt(0) == '+'))
  1035. {
  1036. if (paramEditable.charAt(1) == '1')
  1037. i = 1;
  1038. }
  1039. else
  1040. switch (i)
  1041. {
  1042. default:
  1043. case 1:
  1044. case 2:
  1045. case 0:
  1046. }
  1047. while (true)
  1048. {
  1049. return;
  1050. if ((paramEditable.length() >= 3) && (paramEditable.charAt(1) == '8') && (paramEditable.charAt(2) == '1'))
  1051. {
  1052. i = 2;
  1053. break;
  1054. }
  1055. i = 0;
  1056. break;
  1057. formatNanpNumber(paramEditable);
  1058. continue;
  1059. formatJapaneseNumber(paramEditable);
  1060. continue;
  1061. removeDashes(paramEditable);
  1062. }
  1063. }
  1064. public static String formatNumberToE164(String paramString1, String paramString2)
  1065. {
  1066. PhoneNumberUtil localPhoneNumberUtil = PhoneNumberUtil.getInstance();
  1067. Object localObject = null;
  1068. try
  1069. {
  1070. Phonenumber.PhoneNumber localPhoneNumber = localPhoneNumberUtil.parse(paramString1, paramString2);
  1071. if (localPhoneNumberUtil.isValidNumber(localPhoneNumber))
  1072. {
  1073. String str = localPhoneNumberUtil.format(localPhoneNumber, PhoneNumberUtil.PhoneNumberFormat.E164);
  1074. localObject = str;
  1075. }
  1076. label37: return localObject;
  1077. }
  1078. catch (NumberParseException localNumberParseException)
  1079. {
  1080. break label37;
  1081. }
  1082. }
  1083. private static String getDefaultIdp()
  1084. {
  1085. String str = null;
  1086. SystemProperties.get("ro.cdma.idpstring", null);
  1087. if (TextUtils.isEmpty(null))
  1088. str = "011";
  1089. return str;
  1090. }
  1091. public static int getFormatTypeForLocale(Locale paramLocale)
  1092. {
  1093. return getFormatTypeFromCountryCode(paramLocale.getCountry());
  1094. }
  1095. private static int getFormatTypeFromCountryCode(String paramString)
  1096. {
  1097. int i = NANP_COUNTRIES.length;
  1098. int j = 0;
  1099. int k;
  1100. if (j < i)
  1101. if (NANP_COUNTRIES[j].compareToIgnoreCase(paramString) == 0)
  1102. k = 1;
  1103. while (true)
  1104. {
  1105. return k;
  1106. j++;
  1107. break;
  1108. if ("jp".compareToIgnoreCase(paramString) == 0)
  1109. k = 2;
  1110. else
  1111. k = 0;
  1112. }
  1113. }
  1114. public static String getNumberFromIntent(Intent paramIntent, Context paramContext)
  1115. {
  1116. Object localObject1 = null;
  1117. Object localObject2 = null;
  1118. Uri localUri = paramIntent.getData();
  1119. String str1 = localUri.getScheme();
  1120. if ((str1.equals("tel")) || (str1.equals("sip")))
  1121. localObject1 = localUri.getSchemeSpecificPart();
  1122. while (true)
  1123. {
  1124. return localObject1;
  1125. if (str1.equals("voicemail"))
  1126. {
  1127. localObject1 = TelephonyManager.getDefault().getCompleteVoiceMailNumber();
  1128. continue;
  1129. }
  1130. if (paramContext == null)
  1131. continue;
  1132. paramIntent.resolveType(paramContext);
  1133. String str2 = null;
  1134. String str3 = localUri.getAuthority();
  1135. label104: Cursor localCursor;
  1136. if ("contacts".equals(str3))
  1137. {
  1138. str2 = "number";
  1139. ContentResolver localContentResolver = paramContext.getContentResolver();
  1140. String[] arrayOfString = new String[1];
  1141. arrayOfString[0] = str2;
  1142. localCursor = localContentResolver.query(localUri, arrayOfString, null, null, null);
  1143. if (localCursor == null);
  1144. }
  1145. try
  1146. {
  1147. if (localCursor.moveToFirst())
  1148. {
  1149. String str4 = localCursor.getString(localCursor.getColumnIndex(str2));
  1150. localObject2 = str4;
  1151. }
  1152. localCursor.close();
  1153. localObject1 = localObject2;
  1154. continue;
  1155. if (!"com.android.contacts".equals(str3))
  1156. break label104;
  1157. str2 = "data1";
  1158. }
  1159. finally
  1160. {
  1161. localCursor.close();
  1162. }
  1163. }
  1164. }
  1165. public static String getStrippedReversed(String paramString)
  1166. {
  1167. String str1 = extractNetworkPortionAlt(paramString);
  1168. if (str1 == null);
  1169. for (String str2 = null; ; str2 = internalGetStrippedReversed(str1, str1.length()))
  1170. return str2;
  1171. }
  1172. public static String getUsernameFromUriNumber(String paramString)
  1173. {
  1174. int i = paramString.indexOf('@');
  1175. if (i < 0)
  1176. i = paramString.indexOf("%40");
  1177. if (i < 0)
  1178. {
  1179. Log.w("PhoneNumberUtils", "getUsernameFromUriNumber: no delimiter found in SIP addr '" + paramString + "'");
  1180. i = paramString.length();
  1181. }
  1182. return paramString.substring(0, i);
  1183. }
  1184. private static int indexOfLastNetworkChar(String paramString)
  1185. {
  1186. int i = paramString.length();
  1187. int j = minPositive(paramString.indexOf(','), paramString.indexOf(';'));
  1188. if (j < 0);
  1189. for (int k = i - 1; ; k = j - 1)
  1190. return k;
  1191. }
  1192. private static void internalCalledPartyBCDFragmentToString(StringBuilder paramStringBuilder, byte[] paramArrayOfByte, int paramInt1, int paramInt2)
  1193. {
  1194. for (int i = paramInt1; ; i++)
  1195. {
  1196. char c1;
  1197. if (i < paramInt2 + paramInt1)
  1198. {
  1199. c1 = bcdToChar((byte)(0xF & paramArrayOfByte[i]));
  1200. if (c1 != 0)
  1201. break label30;
  1202. }
  1203. label30: char c2;
  1204. do
  1205. {
  1206. byte b;
  1207. do
  1208. {
  1209. return;
  1210. paramStringBuilder.append(c1);
  1211. b = (byte)(0xF & paramArrayOfByte[i] >> 4);
  1212. }
  1213. while ((b == 15) && (i + 1 == paramInt2 + paramInt1));
  1214. c2 = bcdToChar(b);
  1215. }
  1216. while (c2 == 0);
  1217. paramStringBuilder.append(c2);
  1218. }
  1219. }
  1220. private static String internalGetStrippedReversed(String paramString, int paramInt)
  1221. {
  1222. if (paramString == null);
  1223. StringBuilder localStringBuilder;
  1224. for (String str = null; ; str = localStringBuilder.toString())
  1225. {
  1226. return str;
  1227. localStringBuilder = new StringBuilder(paramInt);
  1228. int i = paramString.length();
  1229. for (int j = i - 1; (j >= 0) && (i - j <= paramInt); j--)
  1230. localStringBuilder.append(paramString.charAt(j));
  1231. }
  1232. }
  1233. public static final boolean is12Key(char paramChar)
  1234. {
  1235. if (((paramChar >= '0') && (paramChar <= '9')) || (paramChar == '*') || (paramChar == '#'));
  1236. for (boolean bool = true; ; bool = false)
  1237. return bool;
  1238. }
  1239. private static boolean isCountryCallingCode(int paramInt)
  1240. {
  1241. if ((paramInt > 0) && (paramInt < CCC_LENGTH) && (COUNTRY_CALLING_CALL[paramInt] != 0));
  1242. for (boolean bool = true; ; bool = false)
  1243. return bool;
  1244. }
  1245. public static final boolean isDialable(char paramChar)
  1246. {
  1247. if (((paramChar >= '0') && (paramChar <= '9')) || (paramChar == '*') || (paramChar == '#') || (paramChar == '+') || (paramChar == 'N'));
  1248. for (boolean bool = true; ; bool = false)
  1249. return bool;
  1250. }
  1251. private static boolean isDialable(String paramString)
  1252. {
  1253. int i = 0;
  1254. int j = paramString.length();
  1255. if (i < j)
  1256. if (isDialable(paramString.charAt(i)));
  1257. for (boolean bool = false; ; bool = true)
  1258. {
  1259. return bool;
  1260. i++;
  1261. break;
  1262. }
  1263. }
  1264. public static boolean isEmergencyNumber(String paramString)
  1265. {
  1266. return isEmergencyNumberInternal(paramString, true);
  1267. }
  1268. public static boolean isEmergencyNumber(String paramString1, String paramString2)
  1269. {
  1270. return isEmergencyNumberInternal(paramString1, paramString2, true);
  1271. }
  1272. @MiuiHook(MiuiHook.MiuiHookType.CHANGE_CODE)
  1273. private static boolean isEmergencyNumberInternal(String paramString1, String paramString2, boolean paramBoolean)
  1274. {
  1275. boolean bool = false;
  1276. if (paramString1 == null);
  1277. while (true)
  1278. {
  1279. return bool;
  1280. if (!isUriNumber(paramString1))
  1281. {
  1282. String str1 = miui.telephony.PhoneNumberUtils.parseNumber(extractNetworkPortionAlt(paramString1));
  1283. if (miui.telephony.PhoneNumberUtils.isMiuiEmergencyNumber(str1, paramBoolean))
  1284. {
  1285. bool = true;
  1286. }
  1287. else
  1288. {
  1289. String str2 = SystemProperties.get("ril.ecclist");
  1290. if (TextUtils.isEmpty(str2))
  1291. str2 = SystemProperties.get("ro.ril.ecclist");
  1292. if (!TextUtils.isEmpty(str2))
  1293. {
  1294. String[] arrayOfString = str2.split(",");
  1295. int i = arrayOfString.length;
  1296. for (int j = 0; ; j++)
  1297. {
  1298. if (j >= i)
  1299. break label150;
  1300. String str3 = arrayOfString[j];
  1301. if ((paramBoolean) || ("BR".equalsIgnoreCase(paramString2)))
  1302. {
  1303. if (!str1.equals(str3))
  1304. continue;
  1305. bool = true;
  1306. break;
  1307. }
  1308. if (str1.startsWith(str3))
  1309. {
  1310. bool = true;
  1311. break;
  1312. }
  1313. }
  1314. }
  1315. else
  1316. {
  1317. label150: Log.d("PhoneNumberUtils", "System property doesn't provide any emergency numbers. Use embedded logic for determining ones.");
  1318. if (paramString2 != null)
  1319. {
  1320. ShortNumberUtil localShortNumberUtil = new ShortNumberUtil();
  1321. if (paramBoolean)
  1322. bool = localShortNumberUtil.isEmergencyNumber(str1, paramString2);
  1323. else
  1324. bool = localShortNumberUtil.connectsToEmergencyNumber(str1, paramString2);
  1325. }
  1326. else if (paramBoolean)
  1327. {
  1328. if ((str1.equals("112")) || (str1.equals("911")))
  1329. bool = true;
  1330. }
  1331. else if ((str1.startsWith("112")) || (str1.startsWith("911")))
  1332. {
  1333. bool = true;
  1334. }
  1335. }
  1336. }
  1337. }
  1338. }
  1339. }
  1340. private static boolean isEmergencyNumberInternal(String paramString, boolean paramBoolean)
  1341. {
  1342. return isEmergencyNumberInternal(paramString, null, paramBoolean);
  1343. }
  1344. public static boolean isGlobalPhoneNumber(String paramString)
  1345. {
  1346. if (TextUtils.isEmpty(paramString));
  1347. for (boolean bool = false; ; bool = GLOBAL_PHONE_NUMBER_PATTERN.matcher(paramString).matches())
  1348. return bool;
  1349. }
  1350. public static boolean isISODigit(char paramChar)
  1351. {
  1352. if ((paramChar >= '0') && (paramChar <= '9'));
  1353. for (boolean bool = true; ; bool = false)
  1354. return bool;
  1355. }
  1356. public static boolean isLocalEmergencyNumber(String paramString, Context paramContext)
  1357. {
  1358. return isLocalEmergencyNumberInternal(paramString, paramContext, true);
  1359. }
  1360. private static boolean isLocalEmergencyNumberInternal(String paramString, Context paramContext, boolean pa