android sim puk
来源:互联网 发布:java 泛型方法使用 编辑:程序博客网 时间:2024/05/02 00:28
IccCard.java --->SimCard.java ----> GsmPhone.java ------> PhoneInterfaceManager.java ------->SimUnlockScreen.java -------> LockPatternKeyguardView.java ------>KeyguardUpdateMonitor.java
KeyguardViewManager.java ------ > KeyguardViewMediator.java -------> PhoneWindowManager.java ------> WindowManagerService.java -------> ServerThread.java
KeyguardUpdateMonitor.java 现在有两个IccCard.State , 分别代表G网和C网,如下:
private IccCard.State mSimState = IccCard.State.READY;
//jmhc ghd 2010.12.21 add{
private IccCard.State mSimStateGsm = IccCard.State.READY;
private String mPhoneType;
//jmhc ghd end }
通IccCard.java 发出的broadcast,分别设置 mSimState 和mSimStateGsm状态, 现在的问题是KeyguardUpdateMonitor怎么把这个两种不同
的状态,传人SimUnlockScreen和LockScreen,并且在SimUnlockScreen和LockScreen中如何表示.
LockScreen 通过方法onSimStateChanged()得到sim卡的状态,在单卡中SimUnlockScreen不需要知道sim卡的状态,一旦SimUnlockScreen
被初始化,就确认为sim卡已锁, 在双卡中,SimUnlockScreen需要知道两张卡的状态,做一些处理。
LockScreen 中针对sim卡状态分了许多种 如下:
/**
* Normal case (sim card present, it's not locked)
*/
Normal(true),
/**
* The sim card is 'network locked'.
*/
NetworkLocked(true),
/**
* The sim card is missing.
*/
SimMissing(false),
/**
* The sim card is missing, and this is the device isn't provisioned, so we don't let
* them get past the screen.
*/
SimMissingLocked(false),
/**
* The sim card is PUK locked, meaning they've entered the wrong sim unlock code too many
* times.
*/
SimPukLocked(false),
/**
* The sim card is locked.
*/
SimLocked(true);
现在,如果我要加入对另外一个卡状态的表示,那么两个状态结合在一起就更多了,简单的处理是,在现有的各个状态中,
对两个卡分别做一个判断,更新其状态。
KeyguardUpdateMonitor.java 中增加变量
mCurrectPhoneType;
mGsmPhoneType;
mCdmaPhoneType;
接收IccCard.java 的broadcast ,并存储状态,其中,mCurrectPhoneType 存在的问题是,mCurrentPhone receive 这边已经更新了许多状态了,handleSimStateChange,就只能处理最后一种了; mGsmPhoneType 和mCdmaPhoneType 存在的问题是,当两个卡都pin锁以后,解锁一个,连带的会对另外一个状态有所改变。
当我记录这些想法的时候,另外一个想法又出现在我的脑海中,那就是从底层,控制两个卡的状态。以上两种路走不同,也就是没有走对路。
今天,实现了一个简单的解决办法
KeyguardUpdateMonitor.java 中方法handleSimStateChange()会接受IccCard.java 的broadcast。这里区分是G网还是C网,是通过IccCard.java发broadcast 时把电话类型作为intent 参数,然后直接把intent 做为参数传人handleSimStateChange(),再做判断,这样就省略了
上面的mCurrectPhoneType, mGsmPhoneType,mCdmaPhonetype 等参数。
机器启动后,会查询C卡,G卡的状态,一旦有任意一张卡状态为PIN锁定,就会初始化SimUnlockScreen.java, 这样 就有一个问题,SimUnlockScreen 已经初始化完了,另外一张卡的PIN锁定状态才设置成功,使得SimUnlockScreen.java状态并不正确。解决这个问题的做法是,在KeyguardUpdateMonitor.java中再加一个broadcast, 在SimUnlockScreen.java加一个receiver, 这样可以主动去修改SimUnlockScreen.java 的状态
RIL
IccCardStatus
IccCardApplication
IccCard.java 在mHandler的方法handleMessage()中通过 mPhone.mCM.getIccCardStatus(obtainMessage(EVENT_GET_ICC_STATUS_DONE)); 调用Ril.java, Ril.java返回消息自然也在mHanlder中,处理流程是getIccCardStatusDone(ar) ---->handleIccCardStatus((IccCardStatus) ar.result)---------->getIccCardState()
SIM 卡的部分AT
D/AT-GSM ( 1046): AT> ATE0Q0V1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> ATE0Q0V1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> ATS0=0
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CMEE=1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CREG=2
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CGREG=1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CCWA=1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CMOD=0
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CSSN=0,1
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+COLP=0
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CSCS="HEX"
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CUSD=1
D/AT-GSM ( 1046): AT< +CME ERROR: 11
D/AT-GSM ( 1046): AT> AT+CGEREP=1,0
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CMGF=0
D/AT-GSM ( 1046): AT< OK
D/AT-GSM ( 1046): AT> AT+CPMS="SM","SM","SM"
D/AT-GSM ( 1046): AT< +CPMS: 0, 0, 0, 0, 0, 0
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
2010-12-23 ��上��午07:05:52 com.ibm.icu4jni.util.Resources createTimeZoneNamesFor
INFO: Loaded time zone names for zh_CN in 597ms.
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT> AT+CFUN=0
[ 18.921508] [DPRTTY] BP mailbox is timeout.
[ 18.925811] GPIO-118 autorequested
D/AT-CDMA ( 788): AT< READY
D/AT-CDMA ( 788): AT< +CREG: 0,0,0
D/AT-CDMA ( 788): AT< ^SIMST: 255
I/RIL-CDMA( 788): onUnsolicited SIMST: ^SIMST: 255
E/RILC-CDMA( 788): unsupported unsolicited response code 1032
D/AT-CDMA ( 788): AT< ^SIMST: 1
I/RIL-CDMA( 788): onUnsolicited SIMST: ^SIMST: 1
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< O[ 18.976287] init: starting 'bootanim'
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT> ATE0V1
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT> ATS0=0
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT> AT+CMEE=2
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT> AT+CMGF=1
D/AT-CDMA ( 788): AT< OK
D/AT-CDMA ( 788): AT> AT+CTA=10
D/AT-CDMA ( 788): AT< OK
UIM --------------------lock
D/RILJ-CDMA( 907): [0243]> SET_FACILITY_LOCK
D/RIL-CDMA( 788): onRequest: SET_FACILITY_LOCK
D/AT-CDMA ( 788): AT> AT+CLCK="SC",1,"1234",7
D/AT-CDMA ( 788): AT< OK
D/RILJ-CDMA( 907): [0243]< SET_FACILITY_LOCK {}
D/CDMA ( 907): [IccCard] EVENT_CHANGE_FACILITY_LOCK_DONE: mIccPinLocked= true
UIM ---------------------unlock
D/RILJ-CDMA( 907): [0251]> SET_FACILITY_LOCK
D/RIL-CDMA( 788): onRequest: SET_FACILITY_LOCK
D/AT-CDMA ( 788): AT> AT+CLCK="SC",0,"1234",7
D/AT-CDMA ( 788): AT< OK
D/RILJ-CDMA( 907): [0251]< SET_FACILITY_LOCK {}
D/CDMA ( 907): [IccCard] EVENT_CHANGE_FACILITY_LOCK_DONE: mIccPinLocked= false
UIM -------------------enter
D/RILJ-CDMA( 907): [0021]> ENTER_SIM_PIN
D/RIL-CDMA( 788): onRequest: ENTER_SIM_PIN
D/AT-CDMA ( 788): AT> AT^CPIN="1234"
D/AT-CDMA ( 788): AT< OK
D/RIL-CDMA( 788): unlocking sim card simStatus=3, need sleep 10s for modem init sim card
SIM ------------------lock
D/RILJ-GSM( 907): [0318]> SET_FACILITY_LOCK
D/RIL-GSM ( 787): onRequest: SET_FACILITY_LOCK
D/RIL-GSM ( 787): RIL_REQUEST_SET_FACILITY_LOCK .........................
D/AT-GSM ( 787): AT> AT+CLCK="SC",1,"1234",7
D/AT-GSM ( 787): AT< OK
D/RILJ-GSM( 907): [0318]< SET_FACILITY_LOCK {}
D/GSM ( 907): [IccCard] EVENT_CHANGE_FACILITY_LOCK_DONE: mIccPinLocked= true
SIM ------------------unlock
D/RILJ-GSM( 907): [0319]> SET_FACILITY_LOCK
D/RIL-GSM ( 787): onRequest: SET_FACILITY_LOCK
D/RIL-GSM ( 787): RIL_REQUEST_SET_FACILITY_LOCK .........................
D/AT-GSM ( 787): AT> AT+CLCK="SC",0,"1234",7
D/AT-GSM ( 787): AT< OK
D/RILJ-GSM( 907): [0319]< SET_FACILITY_LOCK {}
D/GSM ( 907): [IccCard] EVENT_CHANGE_FACILITY_LOCK_DONE: mIccPinLocked= false
SIM ================================= enter
D/RILJ-GSM( 910): [0019]> ENTER_SIM_PIN
D/RIL-GSM ( 1063): onRequest: ENTER_SIM_PIN
D/AT-GSM ( 1063): AT> AT^CPIN=1234 --------------->>>>AT^CPIN="1234"
D/AT-GSM ( 1063): AT< +CME ERROR: 100
D/RILJ-GSM( 910): [0019]< ENTER_SIM_PIN error: com.android.internal.telephony.CommandException: PASSWORD_INCORRECT
D/RILJ-GSM( 910): [0020]> GET_SIM_STATUS
D/RIL-GSM ( 1063): onRequest: GET_SIM_STATUS
D/AT-GSM ( 1063): AT> AT+CPIN?
D/AT-GSM ( 1063): AT< +CPIN: SIM PIN
D/AT-GSM ( 1063): AT< OK
query
AT+CPIN?
puk right
D/RILJ ( 99): [0024]> ENTER_SIM_PUK
D/RILD ( 33): onRequest: ENTER_SIM_PUK
D/AT ( 33): AT> AT^CPIN="01153813","1234"
D/AT ( 33): AT< OK
puk error
/dev/dprtty0
/dev/ttyS0
^CPIN:<code>,[<times>],<puk_times>,<pin_times>,<puk2_times>,<pin2_times>
GET_PIN_PUK_LEFT_COUNTS CDMA
D/RIL-CDMA( 810): onRequest: GET_PIN_PUK_LEFT_COUNTS
D/AT-CDMA ( 810): AT> AT^CPIN?
D/RILJ-CDMA( 1116): [0026]< REGISTRATION_STATE {4, , , 0, -1, -1, -1, 0, -1, -1, 1, 0, -1, 0}
D/CDMA ( 1116): [CdmaServiceStateTracker] Set CDMA Roaming Indicator to: 1. mCdmaRoaming = false, isPrlLoaded = fa1
D/CDMA ( 1116): [CdmaServiceStateTracker] Poll ServiceState done: oldSS=[3 home null null null Unknown CSS not su]
D/AT-CDMA ( 810): AT< ^CPIN:SIM PIN,2,10,2,10,3
D/AT-CDMA ( 810): AT< OK
D/RIL-CDMA( 810): AT+CPIN? response[0]=3
D/RIL-CDMA( 810): AT+CPIN? response[1]=2
D/RIL-CDMA( 810): AT+CPIN? response[2]=10
D/RIL-CDMA( 810): AT+CPIN? response[3]=2
D/RIL-CDMA( 810): AT+CPIN? response[4]=10
D/RIL-CDMA( 810): AT+CPIN? response[5]=3
D/RILJ-CDMA( 1116): [0027]< RIL_REQUEST_GET_PIN_PUK_LEFT_COUNTS {3, 2, 10, 2, 10, 3}
D/AT-GSM ( 809): AT< OK
GET_PIN_PUK_LEFT_COUNTS GSM
>>>> at+epinc?
>>>> D/AT-GSM ( 809): AT< +EPINC: 0, 3, 10, 10
D/AT-GSM ( 809): AT< OK
logcat -s KeyguardUpdateMonitor &
logcat -s LockPatternKeyguardView &
logcat -b radio -s CDMA &
logcat -b radio -s GSM &
logcat -s SimUnlockScreen &
logcat -s KeyguardViewMediator &
logcat -s IccCard &
emulator -skin WVGA800 &
- android sim puk
- android sim puk
- SIM相关术语MCC MNC UIM SIM PIN PUK简介
- SIM卡及PIN码PUK码知识
- SIM,PIN,PUK,IMEI,ICCID,Ki,IMSI,SMSP概念
- SIM基本常识(PIN,PUK,IMEI,ICCID,Ki,IMSI,SMSP)
- [Phone] SIM卡密码PIN和PUK码
- SIM卡的密码PIN与PUK密码PIN
- android SIM
- SIM基本常识(PIN,PUK,IMEI,ICCID,Ki,IMSI,SMSP之间的区别)
- SIM基本常识(PIN,PUK,IMEI,ICCID,Ki,IMSI,SMSP之间的区别)
- SIM基本常识(PIN,PUK,IMEI,ICCID,Ki,IMSI,SMSP之间的区别)
- android 3.2 实现获取pin&puk次数,添加puk验证界面。
- Android中PIN和PUK码解锁研究
- Android中PIN和PUK码解锁研究
- Android中PIN和PUK码解锁研究
- android SIM联系人
- android sim 卡双卡双待
- UDP 发送广播
- Linux系统基础开发技术1:构建Linux 库文件
- MBR 以及MBR的存取控制
- 自相关函数及c程序
- js 操作Cookie
- android sim puk
- 大型网站架构,详细介绍阶段性需求和解决方案
- 私有云架构 - 第二部分 设计原则
- EC-CMS实现生成静态页面操作步骤
- apache sofeware foundation
- 冒泡排序
- x86 x64 IA64
- 时间控件
- GLSL教程 图形管线 片段处理器