输入暗码来上锁和解锁SIM ME LOCK功能
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
运营商需求如下:
输入*#3411#来解锁SIM ME LOCK功能,重启后,非法的卡不需要输入解锁密码。
输入*#3412#来上锁SIM ME LOCK功能,重启后,非法的卡需要输入解锁密码。
[SOLUTION]
由于Modem配置锁卡数据之后,是无法修改的。所以UNLOCK和LOCK的功能在AP端来模拟.
1> 在modem端配置SML 参数,配置锁卡信息:默认是上锁状态。
参考DMS上文档:SIM-ME lock,根据锁需要的 lock 配置相应的 NVRAM_EF_SML_DEFAULT
2> 在app端模拟解锁和上锁的功能
实现需要修改的流程:
(1). 增加一个system property 记录是否有输入解锁暗码。
默认值为false,就是上锁状态;如果默认值为true则为解锁状态
2. 针对插入非法卡时,开机时有被locked的处理
L之前的版本请修改:
alps\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\policy\src\com\android\internal\policy\impl\keyguard\KeyguardUpdat
eMonitor.java
private final BroADCastReceiver mBroadcastReceiver = new BroadcastReceiver() {
} else if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)) {
if (IccCardConstants.State.NETWORK_LOCKED == simArgs.simState) {
//从system Property中取值判断
//如果不需要输入解锁密码,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.simId, mPasswd).start();
//mPasswd为modem配置的解锁密码.
否则就按照原有流程跑,就会正常显示输入锁卡密码界面,需要解锁.
L版本请修改:
alps/frameworks/base/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.j
ava
private void proceedToHandleSimStateChanged(SimArgs simArgs) {
if ((IccCardConstants.State.NETWORK_LOCKED == simArgs.simState) &&
KeyguardUtils.isMediatekSimMeLockSupport()) {
//从system Property中取值判断
//如果不需要输入解锁密码,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.subId, mPasswd).start();
//mPasswd为modem配置的解锁密码.
} else {
(3). 输入暗码的处理
输入*#3411#,解锁设置system Property 为true
输入*#3412#,上锁设置system property 为false
运营商需求如下:
输入*#3411#来解锁SIM ME LOCK功能,重启后,非法的卡不需要输入解锁密码。
输入*#3412#来上锁SIM ME LOCK功能,重启后,非法的卡需要输入解锁密码。
[SOLUTION]
由于Modem配置锁卡数据之后,是无法修改的。所以UNLOCK和LOCK的功能在AP端来模拟.
1> 在modem端配置SML 参数,配置锁卡信息:默认是上锁状态。
参考DMS上文档:SIM-ME lock,根据锁需要的 lock 配置相应的 NVRAM_EF_SML_DEFAULT
2> 在app端模拟解锁和上锁的功能
实现需要修改的流程:
(1). 增加一个system property 记录是否有输入解锁暗码。
默认值为false,就是上锁状态;如果默认值为true则为解锁状态
2. 针对插入非法卡时,开机时有被locked的处理
L之前的版本请修改:
alps\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\policy\src\com\android\internal\policy\impl\keyguard\KeyguardUpdat
eMonitor.java
private final BroADCastReceiver mBroadcastReceiver = new BroadcastReceiver() {
} else if (TelephonyIntents.ACTION_SIM_STATE_CHANGED.equals(action)) {
if (IccCardConstants.State.NETWORK_LOCKED == simArgs.simState) {
//从system Property中取值判断
//如果不需要输入解锁密码,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.simId, mPasswd).start();
//mPasswd为modem配置的解锁密码.
否则就按照原有流程跑,就会正常显示输入锁卡密码界面,需要解锁.
L版本请修改:
alps/frameworks/base/packages/Keyguard/src/com/android/keyguard/KeyguardUpdateMonitor.j
ava
private void proceedToHandleSimStateChanged(SimArgs simArgs) {
if ((IccCardConstants.State.NETWORK_LOCKED == simArgs.simState) &&
KeyguardUtils.isMediatekSimMeLockSupport()) {
//从system Property中取值判断
//如果不需要输入解锁密码,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.subId, mPasswd).start();
//mPasswd为modem配置的解锁密码.
} else {
(3). 输入暗码的处理
输入*#3411#,解锁设置system Property 为true
输入*#3412#,上锁设置system property 为false
