工作中遇到一个需要判断输入法是否是在输入的状态的需求,输入法不需要显示在界面。
既然不需要输入法界面,那么让onCreateInputView时返回空。
检查inputmethodservice的API发现InputMethodService中有
onStartInput,showWindow和hideWindow,onFinishInput,onWindowShown,onWindowHidden,isInputViewShown等方法
根据经验判断onWindowShown和onWindowHidden应该是输入法触发输入和隐藏的回调.
实际测试结果
1.onWindowShown没有被调用,onWindowHidden有被调用。
2.showWindow没有被调用,而hideWindow有被调用。
3.在普通edittext中触发输入法onStartInput有被调用,而在网页中触发焦点时onStartInput没调用一次,把焦点移到网页中的空白部分,触发hideWind,再触发网页输入框焦点没有被调用onStartInput,也没调用showWindow
4.isInputViewShown无法是否在输入状态都返回false.
5.onFinishInput方法在输入法隐藏时有被调用。
这样的API太不可靠了。
难道就没有办法了吗?继续从网上下载开源的OpenWnn输入法,发现它的showWindow和hideWindow方法回调非常准确。
把给输入法加上了inp