private static String impreciseFormatNumber(String number, String localNumber)
        //throws InvalidNumberException
        {
            number = number.ReplaceAll("[^0-9+]", "");

            if (number[0] == '+')
                return number;

            if (localNumber[0] == '+')
                localNumber = localNumber.Substring(1);

            if (localNumber.Length == number.Length || number.Length > localNumber.Length)
                return "+" + number;

            int difference = localNumber.Length - number.Length;

            return "+" + localNumber.Substring(0, difference) + number;
        }
        public static String formatNumber(String number, String localNumber) //throws InvalidNumberException
        {
            if (number.Contains("@"))
            {
                throw new InvalidNumberException("Possible attempt to use email address.");
            }

            number = number.ReplaceAll("[^0-9+]", "");

            if (number.Length == 0)
            {
                throw new InvalidNumberException("No valid characters found.");
            }

            if (number[0] == '+')
                return number;

            try
            {
                PhoneNumberUtil util = PhoneNumberUtil.GetInstance();
                PhoneNumber localNumberObject = util.Parse(localNumber, null);

                String localCountryCode = util.GetRegionCodeForNumber(localNumberObject);
                //Log.w(TAG, "Got local CC: " + localCountryCode);

                PhoneNumber numberObject = util.Parse(number, localCountryCode);
                return util.Format(numberObject, PhoneNumberFormat.E164);
            }
            catch (NumberParseException e)
            {
                //Log.w(TAG, e);
                return impreciseFormatNumber(number, localNumber);
            }
        }
        public static String formatE164(String countryCode, String number)
        {
            if (countryCode == string.Empty || number == string.Empty || number.Length < 3) return string.Empty;
            try
            {
                PhoneNumberUtil util = PhoneNumberUtil.GetInstance();
                int parsedCountryCode = Convert.ToInt32(countryCode);
                PhoneNumber parsedNumber = util.Parse(number,
                                                      util.GetRegionCodeForCountryCode(parsedCountryCode));

                return util.Format(parsedNumber, PhoneNumberFormat.E164);
            }
            catch (NumberParseException npe)
            {
                return string.Empty;
            }
            catch (Exception npe)
            {
                return string.Empty;
            }

            return "+" +
                countryCode.ReplaceAll("[^0-9]", "").ReplaceAll("^0*", "") +
                number.ReplaceAll("[^0-9]", "");
        }