微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > AP端实现锁网输入解锁密码后永久解锁

AP端实现锁网输入解锁密码后永久解锁

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
某些运营商要求插入锁定范围外的的SIM/USIM卡时,手机提示用户输入密码作校验;
但只要有一次输入密码校验通过就做永久解锁,以后开机都不用校验密码,并且所有我们能够识别的SIM/USIM卡都
能够在手机中使用。
[SOLUTION]
可以在Modem端来完成, 请参考如下FAQ
FAQ10146 [SIM_ME_LOCK]锁网输入解锁密码后永久解锁
有时候这个需求只是运营商锁网需求中的其中一条,如果要满足其他条件,
在modem端所做的修改,会导致其他case无法满足,那么就需要在app来做.
APP端实现流程如下:
(1). 增加system property A
a. 增加system property 记录是否有成功输入解锁密码。
默认值为0,就是没有输入或者没有任何卡成功输入状态;每一位表示一张卡的解锁状态.
如果1 , 则表示卡1有成功输入过解锁密码
如果2, 则表示卡2 有成功输入过解锁密码
如果3,则表示卡1和卡2 有成功输入过解锁密码
b. 增加system property B记录输入成功的密码.
如果是双卡,就要为每张卡设置system Property
(2). 在成功输入解锁密码之后,设置system property A对应SimId值为1,且记录password
L之前的版本修改:
alps\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\base\policy\src\com\android\internal\policy\impl\keyguard\
KeyguardSimPinPukView.java
private abstract class CheckSimMe extends Thread {
......
public void run() {
......
if (VERIFY_RESULT_PASS == mResult) {
//把mPasswd 保存到对应的simId system property B中.
//把system Property A对应SIM id那一位设置为1
L版本:
alps /frameworks/base/packages/Keyguard/src/com/mediatek/keyguard/Telephony/
KeyguardSimPinPukMeView.java
private abstract class CheckSimMe extends Thread {
......
public void run() {
......
if (VERIFY_RESULT_PASS == mResult) {
//把mPasswd 保存到对应的simId system property B中.
//把system Property A对应SIM id那一位设置为1
(3). 针对插入非法卡时,开机时有被locked的处理
L之前的版本:
alps\frameworks\base\policy\src\com\android\internal\policy\impl\keyguard\
KeyguardUpdateMonitor.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 A中取值判断和SimId比较.
//如果为true,表示已经成功输入一次密码解锁,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.simId, mPasswd).start();
//mPasswd为则从system Property B中获取对应SimId解锁密码.
//否则就按照原有流程跑,就会正常显示输入锁卡密码界面,需要解锁.
L版本:
alps/frameworks/base/packages/Keyguard/src/com/android/keyguard/KeyguardUp
dateMonitor.java
private void proceedToHandleSimStateChanged(SimArgs simArgs) {
if ((IccCardConstants.State.NETWORK_LOCKED == simArgs.simState) &&
KeyguardUtils.isMediatekSimMeLockSupport()) {
//从system Property A中取值判断和SimId比较.
//如果为true,表示已经成功输入一次密码解锁,则直接调用解锁函数进行解锁.
//参考FAQ12121 [SEC]在app端创建线程来解锁SIM ME lock
new simMeCheckThread(simArgs.subId, mPasswd).start();
//mPasswd为则从system Property B中获取对应SimId解锁密码.
}
} else {

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top