作者cavitylapper (狼子野心)
看板AndroidDev
標題[問題]如何調用IWindowManager的onTransact?
時間Wed Mar 13 22:56:11 2013
我的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)
1F:→ bukiya:實際的動作是寫在 WindowManagerService.java 03/14 13:07
2F:→ bukiya:IWindowManager.java和IWindowManager.aidl只是aidl的 03/14 13:07
3F:→ bukiya:interface而已 03/14 13:08
4F:推 gpc:直接用反射即可 03/14 18:50