Android4.X读取SIM卡短信和联系人相关类实例分析
本文实例讲述了Android4.X读取SIM卡短信和联系人相关类。分享给大家供大家参考,具体如下:
1.IccSmsInterfaceManager
这个类的主要作用有两个
<1>通过SMSDispatcher,发送短信数据
<2>更新和查询SIM卡的短信数据
IccSmsInterfaceManager是一个Binder服务类,Binder接口是ISms.
IccSmsInterfaceManager被创造时Binder服务会被注册。
IccSmsInterfaceManager在PhonProxy中被创建,并且持有对应的PhoneBase对象。
读取SIM卡上的短信数据时,是通过PhoneBase的IccFileHandler去读取的,IccFileHandler调用RIL对象去向Modem发命令,相关代码如下:
fh.loadEFLinearFixedAll(IccConstants.EF_SMS,response);
向SIM卡保存短信数据时,是通过PhoneBase的RIL对象去操作的,RIL对象向Modem发命令。相关代码如下:
if(PhoneConstants.PHONE_TYPE_GSM==mPhone.getPhoneType()){ mPhone.mCi.writeSmsToSim(status,IccUtils.bytesToHexString(smsc), IccUtils.bytesToHexString(pdu),response); }else{ mPhone.mCi.writeSmsToRuim(status,IccUtils.bytesToHexString(pdu), response); }
2.IccPhoneBookInterfaceManagerProxy
这个类主要用于更新和查询SIM卡上的联系人数据.它是IccPhoneBookInterfaceManager的代理。IccPhoneBookInterfaceManager是一个Binder服务。根据PhoneBase的不同,IccPhoneBookInterfaceManager有两个实现类,SimPhoneBookInterfaceManager和RuimPhoneBookInterfaceManager.IccPhoneBookInterfaceManager在PhoneBase对象的创造过程中构造,他会持有一个PhoneBase对象。
IccPhoneBookInterfaceManagerProxy在PhoneProxy对象的创造过程中构造。IccPhoneBookInterfaceManagerProxy的创造过程中完成Binder服务IccPhoneBookInterfaceManager的注册,并且持有IccPhoneBookInterfaceManager对象。
IccPhoneBookInterfaceManager持有一个AdnRecordCache.对象。这个对象来自于IccRecords。IccRecords来自于PhoneBase对象。PhoneBase通过监听UiccController的状态来更新对应SIM卡的IccRecords.
可以这么理解,每次SIM卡状态发生变化后,UiccController首先通过UiccCardApplication更新SIM卡的状态以及更新从SIM卡里读取的数据。然后,再通知UiccController的监听者(PhoneBase,IccCardProxy),告诉他们SIM卡的相关数据已经发生了改变,他们可以更新这些数据(IccRecords)。
希望本文所述对大家Android程序设计有所帮助。