2015年6月24日 星期三

Xposed Module 技巧教學 - 偵測模組啟用

Part 1. Xposed Module 開發教學 - 以 MoPTT 為例
Part 2. Xposed Module 開發教學技巧篇 - 以 MoPTT 為例
Part 3. Xposed Module 技巧教學 - 偵測模組啟用

Xposed Module 在安裝之後,需要在 Installer 中勾選啟用並重新開機後才能運作。

有的 Module 在沒啟用的狀態下開啟 UI,會顯示訊息表示尚未啟用該 Module:



不過上網搜尋資料或者查看 XposedBridgeApi.jar 都看不到取得模組是否被啟
用的方法,而此篇就是介紹該如何偵測模組在 Installer 中的啟用狀態。

PS:這裡指的是我們自己開發的這個 Module

方法其實很的簡單,也很具有 Xposed 的感覺。

也就是先在 UI (Activity)的地方建立一個 Method,假設 UI 叫做 MainActivity
而該 Method 稱作 isModuleEnabled:

private boolean isModuleEnabled(){
    return false;
}

接著,我們在  handleLoadPackage 中,加入一個要 Hook 的 Method:


看得出其中的奧妙了嗎? 沒錯,就是讓我們的 Module Hook 自己 Activity 的
該 Method,將原本傳回的 false 改成 true。

如此一來,我們只需要在 Activity 的 onCreate 或者 onResume 呼叫
isModuleEnabled 判斷 Module 是否被啟用就可以了。

=========== 補充說明 ===========
上面程式碼處看到的  XC_MethodReplacement 是另一種形式的 Callback,
其功能相當於底下的程式碼:



可以查看 XposedBridgeApi.jar 中 XC_MethodReplacement 的原始碼,
會更有感覺。

==============================

沒有留言:

張貼留言