请查看autofill文档(链接在此)。具体来说,是AUTOFILL_HINT_CREDIT_CARD_EXPIRATION_DATE常量。所以我已经在Oreo模拟器中设置了自动填充,它可以很好地获取用户存储的信用卡信息。但问题是到期日期以“09/19”格式从自动填充中获取,而我需要的格式是“09/2019”。从文档中得知,我们可以重写
即使我在推荐的重写方法上设置断点,只有getAutofillType()方法会被触发断点,其他重写的方法都没有被触发。我下载了谷歌的示例应用程序“autofill Sample”并尝试了一下,日期也无法正常工作。所以我认为这不是我的问题。我在一个Oreo模拟器API 26 Nexus 6P上进行测试。
相同的说明在这里:https://developer.android.com/guide/topics/ui/controls/pickers.html#PickerAutofill,但似乎目前在系统自动填充服务中无法正常工作(至少在模拟器上)。
getAutofillType()
方法返回AUTOFILL_TYPE_DATE。
我不理解?因为这样会将时间戳的日期返回给我。我如何让它以我想要的格式返回日期?
Google提供了如何做到这一点的说明:
通过重写以下方法,您可以为视图定义日期自动填充值:
- 重写
getAutofillType()
方法返回AUTOFILL_TYPE_DATE。 重写
getAutofillValue()
方法返回一个日期自动填充值。重写
autofill(AutofillValue)
方法以期望一个日期自动填充值。
鉴于这一点,下面是我在自定义editText中所做的工作:
public class AutoFillDateFormEditText extends AppCompatEditText{
public AutoFillDateFormEditText(Context context) {
super(context);
}
public AutoFillDateFormEditText(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AutoFillDateFormEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public int getAutofillType() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
return AUTOFILL_TYPE_DATE;
}
else return super.getAutofillType();
}
@Override
public void autofill(AutofillValue value) {
super.autofill(value); //what goes here ? im lost
}
@Nullable
@Override
public AutofillValue getAutofillValue() {
return //what should i return here ????
}
}
即使我在推荐的重写方法上设置断点,只有getAutofillType()方法会被触发断点,其他重写的方法都没有被触发。我下载了谷歌的示例应用程序“autofill Sample”并尝试了一下,日期也无法正常工作。所以我认为这不是我的问题。我在一个Oreo模拟器API 26 Nexus 6P上进行测试。
相同的说明在这里:https://developer.android.com/guide/topics/ui/controls/pickers.html#PickerAutofill,但似乎目前在系统自动填充服务中无法正常工作(至少在模拟器上)。