欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android4.X读取SIM卡短信和联系人相关类实例分析

程序员文章站 2023-11-26 16:38:58
本文实例讲述了android4.x读取sim卡短信和联系人相关类。分享给大家供大家参考,具体如下: 1. iccsmsinterfacemanager 这个类的主要作用...

本文实例讲述了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程序设计有所帮助。