Я столкнулся с проблемой с Android 9 и типом ввода телефона EditText.Если вы установите TextWatcher в качестве прослушивателя измененного текста, его обработчики (onTextChanged, beforeTextChanged, afterTextChanged) не будут вызываться.Вот мой код:
final EditText textArea = (EditText)context.findViewById(resources.getIdentifier("textArea", "id", packageName));
textArea.setInputType(InputType.TYPE_CLASS_PHONE);
textArea.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.v("Unity", "string: " + s.toString());
if (!multiLinesMode) {
if (s.length() == 0) {
SendData(2, "");
return;
}
char lastchar = s.toString().charAt(s.length()-1);
if (lastchar == '\n')
close();
else
SendData(2, s.toString());
} else
SendData(2, s.toString());
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.v("Unity", "before");
}
@Override
public void afterTextChanged(Editable s) {
Log.v("Unity", "after");
}
});
Обработчики будут вызываться для каждой кнопки с клавиатуры телефона, кроме цифр.Если я использую Android 8 и ниже, номера обрабатываются правильно.Если я не установил, номера типов ввода обрабатываются правильно.