Android開源:SoftInputMethodHolder - 通過 Hook 監聽系統軟鍵盤狀態

PriZ42 8年前發布 | 9K 次閱讀 軟件開發 Android開發 移動開發

SoftInputMethodHolder

通過 Hook InputMethodManager 的方式監聽系統軟鍵盤的狀態, 當然不僅僅是監聽軟鍵盤,類似的還可以hook其他系統服務。

使用方式:

  1. 導入SoftInputMethodHodler作為依賴庫。
  2. 調用初始化方法 SoftInputMethodHolder.init(context); 該方法會 hook InputMethodManager,所以建議越早調用越好,比如在Application中的 void attachBaseContext(Context base) 方法中。
  3. 需要監聽的地方注冊監聽器: SoftInputMethodHolder.registerListener(onInputMethodListener);
  4. 不用忘記反注冊: SoftInputMethodHolder.unregisterListener(onInputMethodListener);
  5. 應用退出時最好調用: SoftInputMethodHolder.release(); 防止 Context 內存泄漏。

具體使用方法請看Sample,未做充分測試,在定制ROM中可能存在兼容性問題,歡迎提ISSUE

缺陷:

public interface OnInputMethodListener {

void onShow(boolean result);

/**

  • 僅支持主動調用hideSoftInputFromWindow,會回調onHide()
  • 通過系統按鈕關閉軟鍵盤的時候不會回調,
  • 因為鍵盤在一個獨立的進程中,我們hook的只是本地進程的一個binder代理 */ void onHide(boolean result);

}</code></pre>

github

 本文由用戶 PriZ42 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!