大家好,一般情况下,当可输入控件获取到焦点时,一般会弹出输入法,通过输入法来输入相关内容。
是否,我们可以自己控制输入法,想输入什么就输入什么呢?
其实,我们完全可以通过如下代码,来一次性输入,我们想输入的内容,而且不用获取到相应控件的对象。
import java.lang.reflect.Field;
import android.content.Context;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputMethodManager;
public class RemoteInputMethodManager {
private InputMethodManager mIMM;
private InputConnection mIC;
public RemoteInputMethodManager(Context context) {
mIMM = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
if (mIMM != null) {
Class<?> clazz = mIMM.getClass();
if (clazz != null) {
try {
Field f = clazz.getDeclaredField("mServedInputConnection");
if (f != null) {
f.setAccessible(true);
mIC = (InputConnection) f.get(mIMM);
}
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public boolean commitText(CharSequence text, int newCursorPosition) {
if (mIC != null) {
mIC.commitText(text, newCursorPosition);
}
return false;
}
}