注:本文档基于Android 6.0
1 UICC相关类的控制
UiccController
UICC相关的类由UiccController控制,它维护UICC相关信息,监控卡状态变化,在PhoneFactory.makeDefaultPhone()中创建,只会创建一个实例。通过监听卡状态的变化来控制UiccCard对象的建立、销毁及其他相关操作。
UiccCard
与具体的卡对应,每张卡对应一个UiccCard对象。
UiccCardApplication
对应卡中的应用,每个应用对应一个UiccCardApplication对象。
CatService
实现了STK的服务,与RIL及app交互。
IccRecords
记录卡中的数据,通过IccFileHandler去读取数据。
有3个子类:SIMRecords、RuimRecords和IsimUiccRecords,
根据不同的应用创建相应的对象:
点击这里 | 点击这里 |
---|---|
UICC应用类型 | IccRecords对象 |
APPTYPE_SIM/APPTYPE_USIM | SIMRecords |
APPTYPE_CSIM/APPTYPE_RUIM | RuimRecords |
APPTYPE_ISIM | IsimUiccRecords |
IccFileHandler
负责读取UICC中的数据,
有5个子类:SIMFileHandler、RuimFileHandler、UsimFileHandler、CsimFileHandler和IsimFileHandler,
根据不同的应用创建相应的对象:
点击这里 | 点击这里 |
---|---|
UICC应用类型 | IccFileHandler对象 |
APPTYPE_SIM | SIMFileHandler |
APPTYPE_USIM | UsimFileHandler |
APPTYPE_CSIM | CsimFileHandler |
APPTYPE_RUIM | RuimFileHandler |
APPTYPE_ISIM | IsimFileHandler |
2 UICC文件操作
以读取联系人为例,以下为涉及到的主要的类及流程图。
IccProvider
继承ContentProvider,提供UICC中联系人操作的接口,APP可通过ContentProvider的方式访问。
UiccPhoneBookController
实现了IIccPhoneBook,以AIDL的方式提供访问联系人的接口
IccPhoneBookInterfaceManagerProxy
IccPhoneBookInterfaceManager的代理。
IccPhoneBookInterfaceManager
有2个子类:
RuimPhoneBookInterfaceManager (For CDMAPhone),
SimPhoneBookInterfaceManager (For GSMPhone)
AdnRecordCache
缓存联系人信息,当上层发起联系人请求时,会先判断是否已经缓存了联系人信息,若是,则返回缓存的数据,否则从卡里读取。
AdnRecordLoader
调用IccFileHandler读取UICC中的数据。