从 Google 自定义 libPhoneNumber

Customizing libPhoneNumber from Google

我正在使用来自 google 的 libphonenumber 我想自定义这个库的一些数据我克隆了项目然后我在

中修改
resources/PhoneNumberMetadata.xml

我将与埃及相关的手机号码从 10 更改为 15 号码

<territory id="EG" countryCode="20" internationalPrefix="00" nationalPrefix="0"
               mobileNumberPortableRegion="true">
      <availableFormats>
        <numberFormat pattern="(\d)(\d{7,8})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>[23]</leadingDigits>
          <format> </format>
        </numberFormat>
        <numberFormat pattern="(\d{2})(\d{6,7})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>
            1[35]|
            [4-6]|
            8[2468]|
            9[235-7]
          </leadingDigits>
          <format> </format>
        </numberFormat>
        <numberFormat pattern="(\d{3})(\d{3})(\d{4})" nationalPrefixFormattingRule="$NP$FG">
          <leadingDigits>[189]</leadingDigits>
          <format>  </format>
        </numberFormat>
      </availableFormats>
      <generalDesc>
        <nationalNumberPattern>
          [189]\d{8,9}|
          [24-6]\d{8}|
          [135]\d{7}
        </nationalNumberPattern>
      </generalDesc>
      <!-- Subscriber numbers starting with 5 are also permitted for the area codes 040, with 5, 6
           and 7 for the area code 050, with 5 and 7 for 082, with 6 for 084, with 7 for 086 and
           092 and with 5 and 6 for 96. -->
      <fixedLine>
        <possibleLengths national="8,9" localOnly="6,7"/>
        <exampleNumber>234567890</exampleNumber>
        <nationalNumberPattern>
          (?:
            15\d|
            57[23]
          )\d{5,6}|
          (?:
            13[23]|
            (?:
              2[2-4]|
              3
            )\d|
            4(?:
              0[2-5]|
              [578][23]|
              64
            )|
            5(?:
              0[2-7]|
              5\d
            )|
            6[24-689]3|
            8(?:
              2[2-57]|
              4[26]|
              6[237]|
              8[2-4]
            )|
            9(?:
              2[27]|
              3[24]|
              52|
              6[2356]|
              7[2-4]
            )
          )\d{6}
        </nationalNumberPattern>
      </fixedLine>
      <mobile>
        <possibleLengths national="15"/>
        <exampleNumber>100123456712345</exampleNumber>
        <nationalNumberPattern>1[0-25]\d{13}</nationalNumberPattern>
      </mobile>
      <tollFree>
        <possibleLengths national="10"/>
        <exampleNumber>8001234567</exampleNumber>
        <nationalNumberPattern>800\d{7}</nationalNumberPattern>
      </tollFree>
      <premiumRate>
        <possibleLengths national="10"/>
        <exampleNumber>9001234567</exampleNumber>
        <nationalNumberPattern>900\d{7}</nationalNumberPattern>
      </premiumRate>
    </territory>

然后我构建项目然后我将项目中的 Jar 依赖于新 Jar 但仍然看到手机号码是 10 数字而不是 15 那是我写的代码

public static void main(String argc[])
    {
         PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
            try {
                Phonenumber.PhoneNumber egyNumber = phoneUtil.parse("152234567891234", "EG");
                boolean isValidNumber = phoneUtil.isValidNumber(egyNumber);
                System.out.println(isValidNumber);
            } catch (NumberParseException e) {
                e.printStackTrace();
            }
    }

此代码 return 错误,但它应该 return 正确

注意 图书馆为每个国家/地区使用二进制文件,但我认为它已编码

我发现 Google 提供了一种自定义与任何国家/地区相关的元数据的方法 通过一些步骤,您可以在此处找到它们

https://github.com/google/libphonenumber/blob/master/making-metadata-changes.md