关于Android安卓双卡总结

作者: 壞蛋 | 来源:发表于2016-11-29 15:37 被阅读390次


    注:本篇只讲双卡的发展原理,以及解决方法,不提供代码。想要代码的可以略过。

    以下用到的名词解释


    IMEI:国际移动设备身份码

    IMSI:SIM卡的身份码,一张卡只有一个IMSI。

    芯片厂商:MTK,Qualcomm,展讯等。

    手机厂商:三星,华为,乐视,小米等。


    一、双卡由来以及厂商的解决方案

    在中国,聪明的中国人早双卡历史悠久,我记得在以前非智能机时代就实现了。犹记得以前广告

    一个机子两张卡,打电话一张卡,发短信一张卡。

    家里一张卡,工作一张卡,家庭工作两不误。

    老婆一张卡,小三一张卡,老婆小三两不误。

    so,延续古老的传统,以及这种较好的模式,智能手机理应继承这个优良传统。

    但是,在美国,因为运营商绑定销售。所以基本只有一张卡,没这个需求啊。5.0之前没有双卡的API通用接口,各个厂商都有自己的实现方法,导致现在的群魔乱舞。标准不一。方法不一。手机厂商买芯片的时候有可能把双卡解决方案一并购买,也有可能自己实现。

    获取双卡信息的方法主要手段是通过反射实现,需要具体的方法全名,难点在于如何知道双卡管理的包名以及类名以及调用的方法。

    二、双卡ROM上的原理

    底层的不太懂,大家可以找相关文章,不过在ROM层面上,厂商实现双卡管理,主要两种方法:

    第一种:在原有的单卡管理类上额外添加双卡信息获取的方法,直接反射全部方法,然后一一查找即可。

    第二种,新建一个单独的双卡管理器的包,需要反射全部找到双卡管理的实例,再反射全局,再查找,或者直接反编译。

    如果获取了手机的芯片厂商,并且使用 是该厂商提供的方案,理论上可以获取使用该厂商通用双卡解决方案去获取。

    如果手机厂商自己实现双卡管理,如三星。则需要寻找特定的双卡管理包来获取。

    以上为基本原理跟大方向

    三、实现双卡需要考虑的点

    1、芯片的获取问题,一个厂商会生成多种芯片,需要根据获取到的芯片型号来判断厂商。

    2、手机获取的手机基础信息,并不会告诉你是什么芯片,这个资料有可能会被修改,如乐视会把那个值改为lete,而不显示MTK。

    3、不同芯片,需要获取不同芯片的通用方法,一个手机厂商有可能采购多种芯片。

    4、ROM的获取问题,ROM的发布信息并不会直接告诉你是哪个厂商的ROM。

    5、ROM和安卓SDK版本之间的差异会造成获取方法的不同。

    6、如果使用反射跟反编译系统ROM的方法,需要大量时间。并且,这个结果有可能仅仅只对被反编译的机型跟特定的ROM有用。

    7、需要提供市场上常见的双卡手机,得出的结果也只能保证经过测试的手机,并且手机刚好使用同一版本ROM才能保证获取。

    8、如果手机刷了第三方ROM,也会造成上诉方法失效。

    总之,碎片化的严重,造成并没有一个统一的方法去完美获取。需要花时间在适配上

    相关文章

      网友评论

        本文标题:关于Android安卓双卡总结

        本文链接:https://www.haomeiwen.com/subject/fzwbpttx.html