コード例 #1
0
        private boolean matchesEmergencyNumberHelper(String number, String regionCode,
                                                     boolean allowPrefixMatch)
        {
            number = PhoneNumberUtil.extractPossibleNumber(number);
            if (PhoneNumberUtil.PLUS_CHARS_PATTERN.matcher(number).lookingAt())
            {
                // Returns false if the number starts with a plus sign. We don't believe dialing the country
                // code before emergency numbers (e.g. +1911) works, but later, if that proves to work, we can
                // add additional logic here to handle it.
                return(false);
            }
            PhoneMetadata metadata = MetadataManager.getShortNumberMetadataForRegion(regionCode);

            if (metadata == null || !metadata.hasEmergency())
            {
                return(false);
            }
            Pattern emergencyNumberPattern =
                Pattern.compile(metadata.getEmergency().getNationalNumberPattern());
            String normalizedNumber = PhoneNumberUtil.normalizeDigitsOnly(number);

            // In Brazil and Chile, emergency numbers don't work when additional digits are appended.
            return((!allowPrefixMatch || regionCode == "BR" || regionCode == "CL")
        ? emergencyNumberPattern.matcher(normalizedNumber).matches()
        : emergencyNumberPattern.matcher(normalizedNumber).lookingAt());
        }