我想设置PhoneNumberFormattingTextWatcher的语言环境。
但是在kitkat中,不能使用PhoneNumberFormattingTextWatcher(String countryCode)构造函数。
所以我尝试使用反射。像这样。
phoneNumberFormattingTextWatcher = new phoneNumberFormattingTextWatcher();
Field mFormatter = PhoneNumberFormattingTextWatcher.class.getDeclaredField("mFormatter");
mFormatter.setAccessible(true);
mFormatter.set(phoneNumberFormattingTextWatcher,
PhoneNumberUtil.getInstance().getAsYouTypeFormatter(COUNTRY_ISO));
但是mFormatter.set()方法抛出IllegalArgumentException。
我该如何解决?
编译'com.googlecode.libphonenumber:libphonenumber:7.2.2'
build.gradle(application)
答案 0 :(得分:2)
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
这不适用于21或更高版本的api。所以你应该像这样包裹在api lvl条件中。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher("US"));
}else {
mPhoneText.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
}
并且不要忘记设置inputType="phone"
这就是为高级API设置区域设置的方法。
答案 1 :(得分:0)
PhoneNumberFormattingTextWatcher的mFormatter是 com.android.i18n.phonenumbers.AsYouTypeFormatter类但我注入了com.google.i18n.phonenumbers.AsYouTypeFormatter类的实例。 T T