200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Android双卡识别IMSI以及副卡发送短信总结

Android双卡识别IMSI以及副卡发送短信总结

时间:2018-07-16 23:51:57

相关推荐

Android双卡识别IMSI以及副卡发送短信总结

今日科技快讯

有消息称,许多乐视员工的建行龙卡信用卡额度都被调整为1元,建设银行官方给出的理由为“涉及经济案件”。甚至3年前曾服务于乐视的员工,其建行信用卡额度也被调成了1元,这位前乐视员工投诉后建行回应:“该卡留的资料是在乐视,也是为了规避风险。”

作者简介

本篇是Trilen的第二篇投稿,分享了双卡下识别IMSI以及发短信的技术,希望对大家有所帮助。

Trilen的博客地址:

/u010019468

正文

Android5.0 系统才开始提供对双卡识别支持,提供 SubscriptionManager类 来完成对双卡相关设备信息的读取。在 5.0之前 只能根据机型来适配来获取副卡Imsi,本文重点介绍 5.0之后 的Api以及适配。

SubscriptionManager相关Api介绍

这个类按官方解释就是提供电话 Subscription 相关信息,包括监听,查询 Subscription 总数,激活的总数以及相关详情,常用Api如下(本文源码为API22):

List<SubscriptionInfo> getAllSubscriptionInfoList()

该接口返回全部的 SubscriptionInfo 信息

List<SubscriptionInfo> getActiveSubscriptionInfoList()

该接口返回当前处于激活状态下的 SubscriptionInfo 信息,该类包含几个重点信息如下:

1、mSimSlotIndex:卡槽序号,从0开始,最大为1;即实际中 slot=0 表示 卡1,slot=1 表示 卡2;

查看源码 getSimCount() 实现:发现总数要么是1要是2,2即双卡了

2、mId:即 subId,是唯一的,和 sim卡 Subscription 的身份识别。这个后面发现获取相关信息都是通过传 subId 来对应获取相关卡内容。也可以通过 slotId 来直接获取 subId

public static int[] getSubId(int slotId);

两者对应关系存在,根据 subId 也可以获取 slotId,phoneId

public static int getSlotId(int subId)

public static int getPhoneId(int subId)

也可以指定 subId、slotId 返回 SubscriptionInfo

根据对应subId获取SubscriberId(imsi)

Android5.0之后 就开始出现根据 subId 来获取对应 Imsi号,不够没有暴露(hide)接口。暴露的是获取默认的 卡1(slotId=0)的 Ismi

可见 5.0 新增了获取默认 subId 的方法 getDefaultSubscription(),统一都通过 subid 来获取imsi,5.0之前 代码如下:

可以看到 5.0之前 都是直接获取 SubscriberId 不区分 subId 即不分双卡,直接获取 卡1。但我们通过反射方式来获取 卡2 的 Imsi,传对应的 subId 即可:

我们还可以通过 subId 来获取更多关于卡2的相关信息:iccid、SimOperator、NetworkOperator

实现副卡发送短信

Android5.0之前 发送短信代码:

5.0之前 代码如下:

在 5.0之后 的实现会发现

对比 sInstance 初始化的实现发现 SmsManager 在 5.0之后 增加了通过 subid 构造 SmsManager

private SmsManager(int subId) {mSubId = subId;}

并暴露了通过 subid 来获取 SmsManager对象

所以副卡发送短信,只要获取对应的 SmsManager 即可,其他发送短信接口不变

适配

其实双卡国内手机厂商早就有定制实现双卡,Android系统到5.0才提供识别支持,各大厂商却不统一Api,国内的双卡功能是由厂商联合芯片开发商定做的,所以芯片商不一样,厂商不一样,实现方案也就不一样,所以api也不一样,也是隐藏Api,所以必须反射的不同的类和函数名。总的来说,目前全球有高通(小米),联发科(魅族),麒麟海思(华为),猎户座(三星)四家移动通讯芯片制造商。所以要在低版本的手机上适配

必须一一适配不同手机。可以参考下这篇文章:

/ymcl_hx/article/details/53484797

更多

每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。

欢迎长按下图->识别图中二维码或者扫一扫关注我的公众号:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。