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.-]+");