本发明涉及移动终端技术领域,尤其涉及一种基于SIM卡PLMN的双卡管理控制方法及系统。
背景技术:
随着生活的发展,移动终端越来越多的被人们使用,移动终端如手机已经成为人们生活中必不可少的通讯工具。
现有的移动终端为了使用方便,通常使用双卡槽可内置两个SIM卡,为用户进行数据通信带来了方便。现有的双SIM卡也都是支持4G网络。但是目前的移动终端两个SIM卡的管理以及SIM卡连接网络的类型都是通过用户设置进行管理,操作步骤复杂,用户无法根据其中的一个SIM卡对另外的SIM卡及网络连接方式进行管理控制。
因此,现有技术还有待于改进和发展。
技术实现要素:
鉴于现有技术的不足,本发明目的在于提供一种基于SIM卡PLMN的双卡管理控制方法及系统,旨在解决现有技术中移动终端两个SIM卡的管理以及SIM卡连接网络的类型都是是通过用户设置进行管理,操作步骤复杂,用户无法根据其中的一个SIM卡对另外的SIM卡及网络连接方式进行管理控制的技术问题。
本发明的技术方案如下:
一种基于SIM卡PLMN的双卡管理控制方法,其中,方法包括步骤:
A、预先将移动终端的两个卡槽中的一个设为主卡槽,另一个卡槽设置为从卡槽;
B、检测移动终端中的主卡槽中插入的第一SIM卡的PLMN值是否为预置的第一PLMN值;
C、若第一SIM卡的PLMN值为预置的第一PLMN值,则控制第一SIM卡自动解锁;
D、检测移动终端中的从卡槽插入的第二SIM卡的PLMN值是否为预置的第一PLMN值;若第二SIM卡的PLMN值是预置的第一PLMN值,则控制第二SIM卡自动解锁;若第二SIM卡的PLMN值不是预置的第一PLMN值,则继续判断第二SIM卡的PLMN值是否为预置的第二PLMN值;
E、若第二SIM卡的PLMN值为预置的第二PLMN值,则控制锁定第二SIM卡;若第二SIM卡的PLMN值不是预置的第二PLMN值,自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权。
所述的基于SIM卡PLMN的双卡管理控制方法,其中,所述步骤E中若第二SIM卡的PLMN值不是预置的第二PLMN值,自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权之后还包括步骤:
E1、检测到移动终端中输入解锁密码解锁成功后,控制第二SIM卡恢复全部的数据服务使用权。
所述的基于SIM卡PLMN的双卡管理控制方法,其中,所述步骤B还包括步骤:
B1、若第一SIM卡的PLMN值不是预置的第一PLMN值,则控制锁定第一SIM卡和第二SIM卡。
所述的基于SIM卡PLMN的双卡管理控制方法,其中,所述步骤B1之后还包括步骤:
B2、移动终端弹出SIM卡解锁界面,当检测到输入解锁密码解锁成功后,判断第一SIM卡的PLMN值是否为第二PLMN值;
B3、若第一SIM卡的PLMN值是第二PLMN值,则锁定第一SIM卡和第二SIM卡;
B4、若第一SIM卡的PLMN值不是第二PLMN值,则控制第一SIM卡解锁;
B5、重复步骤C、D、E,获取第二SIM卡的数据服务使用情况。
基于任一项所述的基于SIM卡PLMN的双卡管理控制方法,其中,所述第一SIM卡为4G或5G卡,所述第二SIM卡对应为包括4G或5G卡。
一种基于SIM卡PLMN的双卡管理控制系统,其中,系统包括:
卡槽设置模块,用于预先将移动终端的两个卡槽中的一个设为主卡槽,另一个卡槽设置为从卡槽;
检测判断模块,用于检测移动终端中的主卡槽中插入的第一SIM卡的PLMN值是否为预置的第一PLMN值;
第一控制模块,用于若第一SIM卡的PLMN值为预置的第一PLMN值,则控制第一SIM卡自动解锁;
第二控制模块,用于检测移动终端中的从卡槽插入的第二SIM卡的PLMN值是否为预置的第一PLMN值;若第二SIM卡的PLMN值是预置的第一PLMN值,则控制第二SIM卡自动解锁;若第二SIM卡的PLMN值不是预置的第一PLMN值,则继续判断第二SIM卡的PLMN值是否为预置的第二PLMN值;
第三控制模块,用于若第二SIM卡的PLMN值为预置的第二PLMN值,则控制锁定第二SIM卡;若第二SIM卡的PLMN值不是预置的第二PLMN值,自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第三控制模块还包括:
数据服务恢复单元,用于检测到移动终端中输入解锁密码解锁成功后,控制第二SIM卡恢复全部的数据服务使用权。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一控制模块具体包括:
第一SIM卡锁定单元,用于若第一SIM卡的PLMN值不是预置的第一PLMN值,则控制锁定第一SIM卡和第二SIM卡。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一控制模块还包括:
检测与判断单元,用于移动终端弹出SIM卡解锁界面,当检测到输入解锁密码解锁成功后,判断第一SIM卡的PLMN值是否为第二PLMN值;
第二SIM卡锁定单元,用于若第一SIM卡的PLMN值是第二PLMN值,则锁定第一SIM卡和第二SIM卡;
控制单元,用于若第一SIM卡的PLMN值不是第二PLMN值,则控制第一SIM卡解锁;
数据服务使用情况获取单元,用于获取第二SIM卡的数据服务使用情况。
一种基于上述任一项所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一SIM卡为4G或5G卡,所述第二SIM卡对应为包括4G或5G卡。
本发明提供了一种基于SIM卡PLMN的双卡管理控制方法及系统,本发明可在移动终端使用双SIM卡时,根据SIM卡的PLMN值的判断,实现对SIM卡的自动锁定管理及数据访问,为用户使用SIM卡带来了方便。
附图说明
图1为本发明的一种基于SIM卡PLMN的双卡管理控制方法的较佳实施例的流程图。
图2为本发明的一种基于SIM卡PLMN的双卡管理控制系统的较佳实施例的功能原理框图。
具体实施方式
为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明还提供了一种基于SIM卡PLMN的双卡管理控制方法的的较佳实施例的流程图,如图1所示,方法包括步骤:
S100、预先将移动终端的两个卡槽中的一个设为主卡槽,另一个卡槽设置为从卡槽。
具体实施时,移动终端包括但不限于手机、平板电脑等可以电子设备。以手机为例,手机中设置有两个卡槽。在S100前还包括预先配置两个卡槽的SIMLOCK锁并且预置第一PLMN值和第二PLMN值。其中PLMN(Public Land Mobile Network,公共陆地移动网络),由政府或它所批准的经营者,为公众提供陆地移动通信业务目的而建立和经营的网络。具体地,如手机中有两个卡槽,分别为卡槽1和卡槽2。设置卡槽1为优先使用卡槽,即将卡槽1设置为主卡槽。卡槽2设置为从卡槽。
S200、检测移动终端中的主卡槽中插入的第一SIM卡的PLMN值是否为预置的第一PLMN值,如果是,则执行步骤S300,如果否,则执行步骤S901。具体实施时,移动终端在开机时会读取两张SIM卡的PLMN,判断卡槽1中SIM卡的PLMN来决定该SIM卡是否可正常使用以及是否可使用4G服务,然后再根据卡槽1插入的第一SIM卡PLMN来决定卡槽2中第二SIM卡以及数据服务的使用情况。
第一SIM卡为卡槽1插入的SIM卡,第二SIM卡为卡槽2中SIM卡;第一SIM卡为4G或5G卡,第二SIM卡为对应的4G或5G卡。本发明还提供了一种基于SIM卡PLMN的双卡管理控制方法,移动终端中有两个卡槽,分别为卡槽1和卡槽2。设置卡槽1为优先使用卡槽。优先的,将卡槽1设置为主卡槽,则卡槽1设置为从卡槽。移动终端在开机时会分别读取卡槽1和卡槽2中两张SIM卡的PLMN值,卡槽1中SIM卡记为第一SIM卡,卡槽2中SIM卡记为第二SIM卡。判断第一SIM卡的PLMN来决定该SIM卡是否可正常使用以及是否可使用4G服务,然后再根据卡槽1插入的第一SIM卡PLMN来决定卡槽2中第二SIM卡以及数据服务的使用情况。
举例说明,第一PLMN值为基于指定运营商的PLMN,即在双卡设置了SIMLOCK锁并且是双4GSIM卡的前提下,运营商的SIM卡可自动解锁并且能够自由使用各制式数据服务(如2/3G/4G),非运营商的SIM卡有条件的使用(当主卡槽插入的是运营商SIM卡,副卡槽插入非运营商SIM卡时设备会自动解锁并且只能使用2G数据服务,其它情况非运营商SIM卡都是锁住的,需要输入解锁码进行解锁,解锁码由运营商提供,当解锁完后可正常使用并且可自由使用2/3G/4G数据服务),运营商竞争对手的SIM卡禁止使用(即使解锁后还是不能使用)。
S300、控制第一SIM卡自动解锁;
S400、检测移动终端中的从卡槽插入的第二SIM卡的PLMN值是否为预置的第一PLMN值,如果是,则执行步骤S500,如果否,则执行步骤S600;
S500、控制第二SIM卡自动解锁;
S600、继续判断第二SIM卡的PLMN值是否为预置的第二PLMN值,如果是,则执行步骤S700,如果否,则执行步骤S800;
S700、控制锁定第二SIM卡;
S800、自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权;
S900、检测到移动终端中输入解锁密码解锁成功后,控制第二SIM卡恢复全部的数据服务使用权;
S901、控制锁定第一SIM卡和第二SIM卡;
S902、移动终端弹出SIM卡解锁界面,当检测到输入解锁密码解锁成功后,判断第一SIM卡的PLMN值是否为第二PLMN值,如果是,则执行步骤S903, 如果否,则执行步骤S904;
S903、锁定第一SIM卡和第二SIM卡;
S904、控制第一SIM卡解锁,之后执行步骤S400;当卡槽1插入非运营商SIM卡(除竞争对手SIM卡)并且输入正确密码解锁后,该SIM卡也是可使用3/4服务的。解锁成功的情况下,用户做恢复出厂设置处理后,不需要用户再次输入解锁码,卡槽1中非运营商的卡(除竞争对手SIM卡)可以正常使用并且能使用3G/4G服务;
S905、结束。
具体实施时,在双卡双4G版本的移动终端中首先配置两个卡槽的SIMLOCK锁并且预先设置第一PLMN值和第二PLMN值。 通过监听主卡槽插入的第一SIM卡的PLMN值判断是否是第一PLMN值来控制另一个卡槽是否解锁,并判断从卡槽插入的第二SIM卡的的PLMN值是否是第二PLMN值,然后再根据主卡槽的锁卡结果以及从卡槽中第二SIM卡的第二PLMN来决定是否限制第二SIM卡使用的4G服务。例如:设置卡槽1为主卡槽,当判断主卡槽插入的第一SIM卡的PLMN和预置第一PLMN匹配,则第一SIM卡自动解锁可正常使用并且可自由使用2/3G/4G的数据服务,此时,如果判断卡槽2插入的第二SIM卡PLMN值是预置的第一PLMN,则第二SIM卡自动解锁并且也是可以自由使用2/3G/4G的数据服务;如果判断卡槽2插入的第二SIM卡PLMN的值是预置的第二PLMN,则第二SIM卡就被锁住了,输入解锁密码解锁后还是不能使用;如果判断卡槽2插入的第二SIM卡PLMN不是预置的第一PLMN也不是预置的第二PLMN,那么卡槽2中的第二SIM卡也自动解锁可以正常使用,但第二SIM卡的3G/4G数据服务被限制使用,只能使用2G服务。当判断主卡槽插入的第一SIM卡PLMN和预预置的第二PLMN不匹配,则两个卡槽都锁住了,会弹出SIMLOCK解锁界面,当输入解锁密码解锁后,PLMN不是预置的第一PLMN也不是预置的第二PLMN的SIM卡可以正常使用并且也能使用3G/4G数据服务。
对于PLMN值不是第一预置PLMN值,也不是第二预置PLMN值的SIM卡,输入解锁码和没有输入解锁码的行为不一致。输入解锁码以后,非运营商的卡也是可以使用3G/4G服务的。判断手机是否输入了解锁码的方法是:在用户输入解锁码并且解锁成功后,在数据库中保存一个状态。每次开机读取那个状态判断用户是否输入过解锁码。但是恢复出厂设置后,用户是不需要再次输入解锁码的,并且之前保存在数据库中的状态会被清掉,故出现的现象是:非运营商的卡,恢复出厂设置后,不能使用3G/4G服务。解决这个问题的方案是:将解锁状态存入保护分区,让读取和保存网络锁的解锁状态在同一个进程中进行并让读取进程适应写入进程。其中写入进程在SystemUI进程,在用户输入解锁码以后,将状态存入保护分区,而读取进程在Phone进程,读取解锁码状态,判断手机是否能使用3G/4G服务。因为读取和保存状态不在同一个进程中,解决办法是在SystemUI进程中,找到每次开机都会自动调用的方法(KeyguardUpdateMonitor的构造方法),在该方法中读取数据库中解锁码状态,若数据库中不存在该状态表示用户并未输入过解锁码或恢复过出厂设置,此时,需要读取保护分区状态,并将保护分区状态存入数据库状态。而在Phone进程,原本需要读保护分区状态的地方只用读取数据库状态即可。
由以上方法实施例可知,本发明提供了一种基于SIM卡PLMN的双卡管理控制方法,通过判断卡槽1插入的第一SIM卡的PLMN值为第一预置PLMN值后并判断卡槽2插入的第二SIM卡的PLMN的值不是第二预置PLMN值,则第一SIM卡和第二SIM卡都自动解锁。第一SIM卡和第二SIM卡自动解锁后均可使用2G /3G/4G服务,若SIM卡的PLMN值不是第一预置PLMN值,也不是第二预置PLMN值,则SIM只能使用2G服务。
当卡槽1插入的第一SIM卡的PLMN值不是第一预置PLMN值,也不是第二预置PLMN值,并且输入正确密码解锁后,第一SIM卡也是可使用3G/4G服务的。解锁成功的情况下,用户做恢复出厂设置处理后,不需要用户再次输入解锁码,卡槽1中的第一SIM卡可以正常使用并且能使用3G/4G服务。
具体实施时,以第一PLMN值为运营商定制的PLMN值为例,第二PLMN值为运营商的竞争对象的PLMN值,第一SIM卡记为SIM1,第二SIM卡记为第二SIM2。关键伪代码实现:
SIM2依赖SIM1的锁卡处理逻辑,即SIM1与运营商定制的PLMN匹配,Unlock SIM2(SIM2 PLMN不包含在定制的竞争对手的PLMN中)。具体实现伪代码如下:
/**
**** (1)将定制了运营商PLMN以及SIMLOCK锁状态的相关数据文件挂载到具有可读权限的分区中
**** (2)按照SIMLOCK正常流程,读取SIM卡PLMN,并与定制的PLMN进行匹配
****
**/
……
switch (当前SIM卡状态)
{
case READY:
{
//isCompetitorPlmnExist表示卡槽中存在运营商竞争对手的卡
if (!isCompetitorPlmnExist&& 当前处理的是SIM1)
{
if (SIM2 LOCKED) {
//SIM1匹配,解锁SIM2
将SIM2的状态置为READY;
need_unlock = true;
}
}
}
break;
case LOCKED:
{
if (当前处理的是SIM2)
{
if (!isCompetitorPlmnExist && SIM1 READY)
{
将SIM2的状态置为READY;
need_unlock = true;
}
}
else
{
SIM1 locked;
}
break;
}。
设备自动解锁后限定插入非运营商SIM卡的卡槽只能使用2G服务的实现伪代码如下:
//获取当前4G服务所在卡槽
SystemProperties.get(PROPERTY_3G_SIM, "");
//若该卡槽使用的是非运营商卡,切换为2G only
Phone phone = PhoneFactory.getPhone(curr3GSIMSlot);
if (phone != null) {
checkAndChangeNetworkModeIfNeed(phone, Phone.NT_MODE_GSM_ONLY);
}
管控好所有数据切换的UI界面,凡是可以进行数据在卡槽间切换的,都需要禁止切换3,4G能力。当将非运营商的卡设为2G only后,并不是该卡槽没有了4G能力,只是强制拥有4G能力的卡槽只能使用2G。故我们需要禁用网络模式切换的UI界面的实现伪代码如下:
/*** 数据使用界面DataUsageSummary.java
* SIM管理界面SimDialogActivity.java
* 开机设置DataSubSelect.java
* updateCapabilityRelatedPreference():MobileNetworkSettings,此方法用来控制路径:Settings->More->Mobile networks->Prefer network mode菜单是否可点击。
* isPriorityEnabled:表示启用优先卡功能,将4G和数据优先设置到预置PLMN列表定义的SIM卡所在卡槽。
* isOtherOperator4GHide:表示启用隐藏非运营商SIM卡所在卡槽的3G/4G菜单。
***/
if (isPriorityEnabled && (isOtherOperator4GHide == 0x01 || !isAllOtherOperator)) {
String mccmnc = RadioCapabilitySwitchUtil.getSimOperator(
SubscriptionManager.getSlotId(mPhone.getSubId()));
isNWModeEnabled &= isHighPriorityOperator(mccmnc);
}
上述代码表示,当插入的卡不全是其他运营商的卡时,而当前处理的tab页的SIM卡又恰好是其他运营商的卡,这时,我们需要将该菜单置灰。
解锁成功后保护分区和数据库中解锁状态的读写操作的实施伪代码如下:
//将解锁状态存入保护分区tctpersist中,在system_app.te文件中给该分区文件赋读写权限
allow system_app tctpersist_file:dir { add_name open create search read write };
allow system_app tctpersist_file:file { open read write create getattr };
//判断解锁成功后创建SIMLOCK文件并将解锁标志写入文件以及数据库中
File simlockFile = new File(SIMLOCK_STATE_FILE_PATH);
try {
if (!simlockFile.exists()) {
simlockFile.createNewFile();
}
// write data to file
将解锁标志写入simlockFile;
} catch (IOException ex) {
Log.d(TAG, "Input Exception:"+ex.toString());
}
//每次开机在 KeyguardUpdateMonitor的构造方法中读取保护分区SIMLOCK文件的解锁标志,并更新数据库中的解锁标志
//读数据库中SIMLOCK_UNLOCKED的数据
if (SIMLOCK_UNLOCKED数据为空) {//表示用户并未输入过解锁码或恢复过出厂设置
File simlockFile = new File(SIMLOCK_STATE_FILE_PATH);
try {
if (simlockFile.exists()) {
读取simlockFile中存储的解锁标志;
if (解锁标志等于1) {
将SIMLOCK_UNLOCKED置为true并写入数据库;
} else {
将SIMLOCK_UNLOCKED置为false并写入数据库;
}
} else {
将SIMLOCK_UNLOCKED置为false并写入数据库;
}
} catch (IOException ex) {
Log.d(TAG, "Input Exception:"+ex.toString());
}
}
在示例性实施例中,装置可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本发明还提供了一种基于SIM卡PLMN的双卡管理控制系统的较佳实施例的功能原理框图,如图2所示,其中,系统包括:
卡槽设置模块100,用于预先将移动终端的两个卡槽中的一个设为主卡槽,另一个卡槽设置为从卡槽;具体如方法实施例所述。
检测判断模块200,用于检测移动终端中的主卡槽中插入的第一SIM卡的PLMN值是否为预置的第一PLMN值;具体如方法实施例所述。
第一控制模块300,用于若第一SIM卡的PLMN值为预置的第一PLMN值,则控制第一SIM卡自动解锁;具体如方法实施例所述。
第二控制模块400,用于检测移动终端中的从卡槽插入的第二SIM卡的PLMN值是否为预置的第一PLMN值;若第二SIM卡的PLMN值是预置的第一PLMN值,则控制第二SIM卡自动解锁;若第二SIM卡的PLMN值不是预置的第一PLMN值,则继续判断第二SIM卡的PLMN值是否为预置的第二PLMN值;具体如方法实施例所述。
第三控制模块500,用于若第二SIM卡的PLMN值为预置的第二PLMN值,则控制锁定第二SIM卡;若第二SIM卡的PLMN值不是预置的第二PLMN值,自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权;具体如方法实施例所述。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第三控制模块还包括:
数据服务恢复单元,用于检测到移动终端中输入解锁密码解锁成功后,控制第二SIM卡恢复全部的数据服务使用权;具体如方法实施例所述。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一控制模块具体包括:
第一SIM卡锁定单元,用于若第一SIM卡的PLMN值不是预置的第一PLMN值,则控制锁定第一SIM卡和第二SIM卡;具体如方法实施例所述。
所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一控制模块还包括:
检测与判断单元,用于移动终端弹出SIM卡解锁界面,当检测到输入解锁密码解锁成功后,判断第一SIM卡的PLMN值是否为第二PLMN值;具体如方法实施例所述。
第二SIM卡锁定单元,用于若第一SIM卡的PLMN值是第二PLMN值,则锁定第一SIM卡和第二SIM卡;具体如方法实施例所述。
控制单元,用于若第一SIM卡的PLMN值不是第二PLMN值,则控制第一SIM卡解锁;具体如方法实施例所述。
数据服务使用情况获取单元,用于获取第二SIM卡的数据服务使用情况;具体如方法实施例所述。
一种基于上述任一项所述的基于SIM卡PLMN的双卡管理控制系统,其中,所述第一SIM卡为4G或5G卡,所述第二SIM卡对应为包括4G或5G卡;具体如方法实施例所述。
综上所述,本发明提出了一种基于SIM卡PLMN的双卡管理控制方法及系统,方法包括:检测第一SIM卡的PLMN值是否为预置的第一PLMN值;若是,则控制第一SIM卡自动解锁,继续检测第二SIM卡的PLMN值是否为预置的第一PLMN值,若是预置的第一PLMN值,则控制第二SIM卡自动解锁;若不是预置的第一PLMN值且也不是预置的第二PLMN值,则自动解锁第二SIM卡,限制第二SIM卡的部分数据服务使用权,若第二SIM卡的PLMN值为预置的第二PLMN值,则控制锁定第二SIM卡。本发明可在使用双SIM卡时,根据SIM卡的PLMN值的判断,实现对SIM卡的自动锁定管理及数据访问,为用户使用SIM卡带来了方便。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。