给什么平台,跳什么舞

读UIM卡中短信的代码结构

管理UIM卡中的信息 pref_title_manage_uim_messages pref_key_manage_uim_messages

packages/apps/Mms/src/com/android/mms/ui/MessagingPreferenceActivity.java

mManageUimPref ->ManageSimMessages.class

packages/apps/Mms/src/com/android/mms/ui/ManageSimMessages.java

startQuery -> ...

-------------------------------provider-----------------------------------------

packages/providers/TelephonyProvider/src/com/android/providers/telephony/SmsProvider.java

query match== SMS_ICC+MAX_MATCH_TYPE -> getSingleMessageFromIcc

getSingleMessageFromIcc -> smsManager.getAllMessagesFromIcc

frameworks/base/telephony/java/android/telephony/SmsManager.java

getAllMessagesFromIcc -> iccISms.getAllMessagesFromIccEf

frameworks/base/telephony/java/com/android/internal/telephony/cdma/RuimSmsInterfaceManager.java

getAllMessagesFromIccEf -> mPhone.getIccFileHandler().loadEFLinearFixedAll(IccConstant.EF_SMS, response);

注:buildValidRawData ArrayList<SmsRawData> ret if(STATUS_ON_ICC_FREE) ret.add(null) else ret.add(new SmsRawData(...));

frameworks/base/telephony/java/com/android/internal/telephony/IccFileHandler.java

loadEFLinearFixedAll -> obtainMessage(EVENT_GET_RECORD_SIZE_DONE)

loadEFLinearFixedAll -> phone.mCM.iccIO(COMMAND_GET_RESPONSE, ...);

根据下面LOG中红色部分,就可以确定代码流程。

等到COMMAND_GET_RESPONSE返回,就要响应消息EVENT_GET_RECORD_SIZE_DONE了,

然后就调phone.mCM.iccIO(COMMAND_READ_RECORD,....); 然后在EVENT_READ_RECORD_DOWN消息中循环。

frameworks/base/telephony/java/com/android/internal/telephony/RIL.java

iccIO -> RILRequest.obtain(RIL_REQUEST_SIM_IO, result);

hardware/ril_c/reference-ril/reference-cpb71.c

requestSIM_IO

-----------------------------LOG------------------------------

RILJ [0495]> iccIO: SIM_IO 0xc0 0x6f3c path: 3F007F25,0,0,15

RIL onRequest: SIM_IO

RILJ [0496]> iccIO: SIM_IO 0xb2 0x6f3c path: 3F007F25,1,4,176

RIL onRequest:SIM_IO

AT AT(card:21)> AT+CRSM=178,28476,1,1,4,176

AT AT(card:21)< +CRSM:......

--------------------------------------------------------------

frameworks/base/telephony/java/com/android/internal/telephony/IccFileHandler.java

static protected final int COMMAND_READ_RECORD = 0xb2;

static protected final int COMMAND_GET_RESPONSE = 0xc0;

 

 

 

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

解码后,发现,日期显示为1970-1-1

frameworks/../telephony/cdma/SmsMessage.java

createFromEfRecord cdma_sms_decode

 

SmsProvider.java getAllMessagesFromIcc  SmsMessage message = messages.get(i); message.getTimestampMillis();

SmsMessage.java  mWrappedSmsMessage.getTimestampMillis();

SmsMessageBase.java return scTimeMillis;

 

SmsMessage.java scTimeMillis =

 

BearerData.java TimeStamp

super(TimeZone.getDefault().getID());

posted @ 2012-10-19 11:06  Jimwind  阅读(994)  评论(0)    收藏  举报
==============精通*学习*关注==============