SIM卡信息的管理
MTK平台上,所有插入到手机中的SIM卡的信息都会存储在数据库com.android.providers.telephony中。
原始的数据库

图表 1 SimInfo数据表的结构
从上图示中,我们可以看到siminfo表的大致结构,包含字段:_id, display_name, name_source, number, display_number_format, icc_id, color, slot, operator, data_roaming。Siminfo表的ContentProvider过程在TelephonyProvider类中,完成数据表建立、升级、常规操作(增删改查)等。

图表 2 siminfo的URI
这样,我们就可以通过类似于Uri.parse(“content://telephony/siminfo”)的方式来进行数据库的日常操作了。
代码结构
为使用方便,MTK添加了几个实用类,SimInfoManager(mediatek/frameworks/base/telephony/java/com/mediate/telephony/SimInfoManager.java)和SIMInfo(frameworks/opt/telephony/src/java/android/provider/Telephony.java)来对siminfo表进行操作,先来看一下一个整体的类图:

图表 3 MTK平台管理SIM卡信息的代码结构
在平台上,MTK有两个框架来提供SIM卡信息的访问服务,一个基于SIMInfo,另一个基于SimInfoManager(可能与平台升级有关)。但是,对数据库的访问都是通过SimInfoManager来操作的,SIMInfo类不直接操作数据;其通过SimInfoManager来完成功能;所以在两者之间,会有一个Adapter来完成适配工作。
SimInfoManagerAdp的工作比较简单,就是直接调用SimInfoManager中相同的接口来完成本身的功能,看:

图表 4 SimInfoAdapter的适配工作
SimInfoManager类中的各方法,会根据其需要的功能来进行数据库操作,仅看一例:

图表 5 SimInfoManager进行数据库操作
表中的数据如何插入
在MT6582平台上,MTK添加了一个类来做SIM卡信息的更新:SimInfoUpdate,其主要是针对SIM卡插入、交换、拔除等用户操作来对siminfo表做一些更新操作,并给出相关提示信息,常见的就是我们开机后的SIM卡状态提示。
类中,监听了几个广播消息,基于此来对数据表进行更新。

图表 6 SimInfoUpdate监听的广播
这个类开放出来的接口主要是:updateSimInfoByIccId(String, String, String, String, Boolean):根据形参中SIM卡的iccid,与当前siminfo表中所有有slot_id值的记录做一次比对,确定SIM卡是否交换卡槽或者是新卡;并根据结果来更改(插入或更新)数据表。最后,对于插入新卡、移除SIM卡操作进行设置(设置Color、DefaultName等)和更新。最后向外弹出提示框,并发送广播ACTION_SIM_INFO_UPDATE。
SIM卡信息的管理的更多相关文章
- Android开发之获取手机SIM卡信息
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 ...
- iphone获取sim卡信息
/* iphone获取sim卡信息 1.加入一个Framework(CoreTelephony.framework). 2.引入头文件 #import <CoreTelephony/CTTele ...
- ios开发获取SIM卡信息
.加入一个Framework(CoreTelephony.framework). .引入头文件 #import<CoreTelephony/CoreTelephonyDefines.h> ...
- Windows mobile 下读取手机SIM卡信息(转)
Windows mobile 下读取手机SIM卡信息 c#改善 Windows mobile 下读取手机SIM卡信息
- 利用电话管理器TelephonyManager获取网络和SIM卡信息
import java.util.ArrayList;import java.util.HashMap;import java.util.Map; import android.os.Bundle;i ...
- Android菜鸟的成长笔记(23)——获取网络和SIM卡信息
TelephonyManager是一个管理手机通话状态.电话网络信息的服务类,该类提供了大量的getXxx()方法来获取电话网络的相关信息.这些信息包括设备编号.软件版本.网络运营商代号.网络运营商名 ...
- Android获取SIM卡信息--TelephonyManager
1>获得TelephonyManager TelephonyManager telMgr = (TelephonyManager) getSystemService(TELEPHONY_SER ...
- 2019/1/9 6系列所有装置编号与SIM卡信息抓取
一.报错:File "G:/station/6系列装置信息明细.py", line 12, in <module>workbook.save(r'.\6系列装置明细表. ...
- SIM卡读卡器的研究与设计
SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电话中," ...
随机推荐
- CodeForces 711D Directed Roads
计数,模拟. 首先观察一下给出的图的特点: $1.$一定存在环. $2.$可能存在多个环. 我们对每个环计算方案数,假设环$C$上包含$x$条边,那么把环$C$破坏掉的方案数有${2^x} - 2$种 ...
- 【.NET】Repeater控件简单的数据绑定(有bool,日期,序号)
前述: 讲的是Repeater,使用的是XML文件读取,没用ADO.NET ,而分页有很多方法,比如用PagedDataSource,或者通过参数在数据源写SQL语句来实现. 页面: <%@ I ...
- onkeyup事件只能输入数字,字母,下划线
<input type="text" onkeyup="value=value.replace(/[\W]/g,'')"/>
- [SOJ] can I post the letter?
1155. Can I Post the letter Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description I am a t ...
- ubuntu搭建git服务器
1.准备两台ubuntu虚拟机,其中一个作为server,另一个作为client.检查是否安装ssh,如果没有安装:sudo apt-get install openssh-server, 然后在se ...
- 手动添加PopMenu出现的问题
最近在github上找了个比较酷的弹出菜单PopMenu用来做分享页面,demo下载运行OK,于是拖进项目中,一编译就呵呵了.... 一看demo目录,原来这还还引用了其他库,于是把pod下面的pop ...
- reids配置参数详解
转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no 默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...
- SQL 小笔记
如何得到字段的类型 select sql_variant_property(ID,'BaseType') from tb
- ie6的png24问题
解决IE6的PNG透明JS插件 DD_belatedPNG 引:http://www.cnblogs.com/cobby/archive/2012/05/11/2495801.html IE6的PNG ...
- linux提示语言包
locale -a 查看可用的语言包.选择中文语言包 echo 'LC_ALL="zh_CN.utf8"' >> /etc/profileecho 'export LC ...