PhoneNumberUtils.isGlobalPhoneNumber не возвращает правильные результаты

У меня есть EditText, определенный в макете XML, как это:

<EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:id="@+id/enter_phone_field"
        android:layout_below="@id/enter_name_field"
        android:layout_alignRight="@id/destination_value_label"
        android:layout_alignEnd="@id/destination_value_label" />

Я реализовал его OnFocusChangeListener следующим образом:

enterPhoneNumber = (EditText)findViewById(R.id.enter_phone_field);


        // phone number lost focus listener
        enterPhoneNumber.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (!hasFocus){
                    if (PhoneNumberUtils.isGlobalPhoneNumber(enterPhoneNumber.getText().toString())){
                        //valid phone number detected
                        Log.i("PhoneNumberValidated", enterPhoneNumber.getText().toString());
                    }
                    else {
                        enterPhoneNumber.setError("Please enter valid phone number");
                    }
                }
            }
        });

Я пытался войти 34 в поле enterPhoneNumber, и когда я по каким-то причинам нажал на него, он не показывал ошибку.

Есть идеи?

1 ответ

Поскольку "34" является глобальным числом по определению PhoneNumberUtils.isGlobalPhoneNumber, которое в свою очередь проверяет, что "34" соответствует шаблону:

private static final Pattern GLOBAL_PHONE_NUMBER_PATTERN =
            Pattern.compile("[\\+]?[0-9.-]+");
Другие вопросы по тегам