在API 22版本以下的设备中,可以使用输入法编辑器(IME)来模拟自动填充框架。以下是实现方法的示例代码:
在AndroidManifest.xml文件中声明IME:
...
在res/xml文件夹中创建一个名为input_method.xml的文件,并定义IME的行为:
在IME的onCreateInputView方法中,创建用于自动填充的视图:
@Override
public View onCreateInputView() {
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.input_view, null);
// Populate view with fields and data to be autofilled
return view;
}
在IME的onStartInput方法中,为需要自动填充的EditText设置InputConnection:
@Override
public void onStartInput(EditorInfo attribute, boolean restarting) {
super.onStartInput(attribute, restarting);
InputConnection ic = getCurrentInputConnection();
if (ic != null) {
ic.setSelection(0, ic.getText().length());
}
// Set up InputConnection for EditText fields to be autofilled
}
需要注意的是,在使用IME进行自动填充时,用户必须切换到使用所定义的输入法编辑器。