Android开源:SoftInputMethodHolder - 通过 Hook 监听系统软键盘状态
PriZ42
8年前
<h2>SoftInputMethodHolder</h2> <p>通过 Hook InputMethodManager 的方式监听系统软键盘的状态, 当然不仅仅是监听软键盘,类似的还可以hook其他系统服务。</p> <h3>使用方式:</h3> <ol> <li>导入SoftInputMethodHodler作为依赖库。</li> <li>调用初始化方法 SoftInputMethodHolder.init(context); 该方法会 hook InputMethodManager,所以建议越早调用越好,比如在Application中的 void attachBaseContext(Context base) 方法中。</li> <li>需要监听的地方注册监听器: SoftInputMethodHolder.registerListener(onInputMethodListener);</li> <li>不用忘记反注册: SoftInputMethodHolder.unregisterListener(onInputMethodListener);</li> <li>应用退出时最好调用: SoftInputMethodHolder.release(); 防止 Context 内存泄漏。</li> </ol> <p>具体使用方法请看Sample,未做充分测试,在定制ROM中可能存在兼容性问题,欢迎提ISSUE</p> <h3>缺陷:</h3> <pre> <code class="language-java">public interface OnInputMethodListener { void onShow(boolean result); /** * 仅支持主动调用hideSoftInputFromWindow,会回调onHide() * 通过系统按钮关闭软键盘的时候不会回调, * 因为键盘在一个独立的进程中,我们hook的只是本地进程的一个binder代理 */ void onHide(boolean result); }</code></pre> <h3><a href="/misc/goto?guid=4959740701085214569">github</a></h3>