STK 流程處理 ,以Display_TEXT為例
1,ril上報訊息。
ril.java 收到上報訊息 RIL_UNSOL_STK_PROACTIVE_COMMAND
調 mStkProCmdRegistrant
stkService.java 收到訊息 handleMessage MSG_ID_PROACTIVE_COMMAND
2,上報資料的解碼
調用 RilMessageDecode 進行來的訊息的解碼。
調用 CommandParamsFactory 的 make 函數來解碼
在TextMessage的text變數已經儲存解析完畢的資料
STK解碼的函數在 CommandParams.java commandDetails.java
stkService.java中 定義 ComprehensionTlvTag
以全球通卡為例
D0628103012100820281020D570870B951FB786E8BA48FDB51654E2D56FD79FB52A84E3A60A863D04F9B76845B9E7528670D52A1002C4F539A8C4E305BCC591A5F69768479FB52A865705B57751F6D3BFF0C53D66D8852198FDB5165624B673A754C9762
TS 102 223
D0 proactive UICC command tag
62 length
81 command details tag
03 command length
01 command number
21 00 display text
82 devices identities tag
02 length
81 source UICC
02 Display
0D text string tag
57 length
O8 UCS2
以CommandParamsFactory 的 make 函數為引導一個個位元組的來解析。參見
(ETSI TS 102 221,ETSI TS 102 223協議)
3, framework 上報資料到上層
stkService.java中 處理 handleRilMsg 訊息
command類型 MSG_ID_PROACTIVE_COMMAND 將顯示的text
cmdParams = (CommandParams) rilMsg.mData;
處理 handleProactiveCommand
類型 DISPLAY_TEXT
通過 STK_CMD_ACTION intent 類型發送給 stkCmdReceiver .改receiver 啟動
StkAppService