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>