[問題]如何調用IWindowManager的onTransact?

看板AndroidDev作者 (狼子野心)時間12年前 (2013/03/13 22:56), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
我的APK已經有share user id = android.uid.system 並且也有sign platform key了 我想要用程式讓keyGuardManager的isKeyguardLocked() 和isKeyGuardSecure()結果是true 不知道該怎麼做好 所以想直接去改記錄這兩個值的根源 從源碼看起來 似乎這兩個方法(isKeyGuard...)是從IWindowManager那邊拿結果過來的 然後再看IWindowManager 除了提供查出剛剛那兩個的值的方法以外 似乎是在onTrasact當中進行寫入處理 不過在IWindowManager的aidl中 並沒有公開onTransact方法 然後我模仿寫入的程式片段 case TRANSACTION_isKeyguardLocked: { data.enforceInterface(DESCRIPTOR); boolean _result = this.isKeyguardLocked(); reply.writeNoException(); reply.writeInt(((_result)?(1):(0))); return true; } case TRANSACTION_isKeyguardSecure: { data.enforceInterface(DESCRIPTOR); boolean _result = this.isKeyguardSecure(); reply.writeNoException(); reply.writeInt(((_result)?(1):(0))); return true; } 我將CASE內的處理寫到我的程式中 但是是失敗的 有沒有大大研究過源代碼 能指點一下該怎麼寫呢? 另外我有試過reflection了...不過可能是我語法錯所以也失敗了... 另外附上該IWindowManager源碼 http://0rz.tw/Ob1mO -- "山姆走到佛羅多身邊, 兩人的雙手緊握在一起, 好不容易才找到繼續走下去的勇氣。" ──摘錄自魔戒二部曲 雙城奇謀 第四章第九節 屍羅的巢穴 天音:這真的是給好孩子看的東西嗎??? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.248.58.25 ※ 編輯: cavitylapper 來自: 111.248.58.25 (03/13 22:57) ※ 編輯: cavitylapper 來自: 111.248.58.25 (03/13 22:59)

03/14 13:07, , 1F
實際的動作是寫在 WindowManagerService.java
03/14 13:07, 1F

03/14 13:07, , 2F
IWindowManager.java和IWindowManager.aidl只是aidl的
03/14 13:07, 2F

03/14 13:08, , 3F
interface而已
03/14 13:08, 3F

03/14 18:50, , 4F
直接用反射即可
03/14 18:50, 4F
文章代碼(AID): #1HG9EEl4 (AndroidDev)