首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android-Pin流程,飞行模式相干流程总结【工作日记一】

2013-02-28 
Android--Pin流程,飞行模式相关流程总结【工作日记一】Radio 对应相关的Log: GET_SIM_STATUSAPPSTATE_PINMS

Android--Pin流程,飞行模式相关流程总结【工作日记一】
Radio 对应相关的Log: <GET_SIM_STATUS  APPSTATE_PIN   MSimIccCardProxy: ACTION_SIM_STATE_CHANGED  rease PIN Logcat对应的Log:

KeyguardUpdateMonitor:ACTION_SIM_STATE_CHANGEDKeyguardUpdateMonitor:handleSimStateChange:intentValue=PIN_REQUIMSimLockPatternKeyguardView:createUnlockScreenFor(SimPin);MSimLockPatternKeyguardView:Display SimUnlockScreen for sub:

 1、流程:MSimIccCardProxy.java 发送广播 broadcastStickyIntent(,)(reason=PIN 参数) 接受广播的类:
  KeyguardUpdateMonitor.java   TelephonyIntents.ACTION_SIM_STATE_CHANGED    SimArgs.fromIntent(intent)  obtainMessage:MSG_SIM_STATE_CHANGED   //334 Line   handleSimStateChange((SimArgs) msg.obj);  //211 Line    onSimStateChanged(state, subscription);     KeyguardViewMediator.java      onSimStateChanged( , );        !isShowing()            doKeyguardLocked( )           resetStateLocked( )

  2、PIN是否在Settings中选中的流程:
   IccLockSettings.java     getIccLockEnabled()     IccCardProxy.java       getIccLockEnabled()       mUiccApplication.getIccLockEnabled()         getPin1State()             mPin1State             return  true/false 

 3、查PIN的状态:GET_SIM_STATUS这个状态查询sim卡PIN的状态   <GET_SIM_STATUS IccCardStatus { { APPTYPE_USIM, APPSTATE_PIN, pin|=PINSTATE_ENABLED_NOT_  }}    PIN的次数,在SimUnlockScreen.java类中:           
     checkPin() atteptsRemaining = ITelephony.stub.asInterface(ServiceManager.                   checkService("phone")).getIccPin1RetryCount();                 mHeaderText.setText(displayMessage);

    查PIN的剩余次数: +EPINC:2,3,10,10         对应的结构体: +EPINC:<Pin1>, <Pin2>, <Puk1>, <Puk2> 返回可用的次数    PIN次数相关知识:                       static final int PIN_RESULT_SUCCESS = 0; Phone.java    static final int PIN_PASSWORD_INCORRECT = 1;                       static final int PIN_GENERAL_FAILURE = 2;  4、PIN PUK输入错误查询:  卡一 卡二:AT+CPIN=" "   PUK码:发送指令:command=AT+EPIN1=" "  5、PIN设置可用不可用的流程   在Setting包中的   
 IccLockSettings.java      tryChangeIccLockState()      UiccCardLockEnabled        setIccLockEnabled( , , )        RIL.java         setFacilityLockForApp( , , , , , )           lockString = (lockState) ? "1":"0";           rr.mp.writeString(lockString);

           通过这个lockString来设置到ril层,以后上层framework层查状态,相应的ril层返回相应的状态  6、关闭分行模式:GET_SIM_STATUS查状态时,sub0返回10个参数  sub0 <GET_SIM_STATUS IccCardState{CARDSTATE_PRESENT, PINSTATE_UNKNOWN,num_apps1,              gsm_id=0{APPTYPE_USIM, APPSTATE_PIN,pin1=PINSTATE_ENABLED_NOT_VERIFIED               cmda_id=01, ism_id=-1}[sub0]   sub1 <GET_SIM_STATUS IccCardState{CARDSTATE_PRESENT, PINSTATE_UNKNOWN,num_apps=1,              gsm_id=0{APPTYPE_SIM, APPSTATE_PIN}, cdma_id=8, ism_id=-1}[sub1]              mtk的猫,sub1 返回8个参数    锁定SIM卡是否勾选上:            PIN选中状态,报状态:APPSTATE_READY, pin1=PINSTATE_ENABLED_VERIEIED  PIN去掉选中的状态:报状态:APPSTATE_READY, pin1=PINSTATE_DISABLED 1、飞行模式对应的类在framework层,路径如下:    framework/base/policy/src/com/android/internal/policy/impl/GlobalAction.java    有个方法changeAirplaneModeSystemSetting(boolean on) 会根据这个on为true/false写值       Settings.System.putInt(mContext.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, on ? 1:0);       然后发送广播:          
 Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);           intent.addFlags(Intent.FLAG_RECEIVER_REPLACE_PENDING);           intent.putExtra("state", on);           mContext.sendBroadcast(intent);

  2、飞行模式置灰不置灰的流程分析:
   PhoneWindowManager.java     mGlobalActions.showDialog(KeyguardShowing, isDeviceProvisioned());     GlobalActions.java       showDialog( , );          mAirplaneModeOn.updateState(mAirplaneState)          mAdapter.notifyDataSetChanged();     PhoneStateListener  mPhoneStateListener = new PhoneStateListener {         mAirplaneModeOn.updateState(mAirplaneState);         mAdapter.notifyDataSetChanged();    } 

    点击后变为不可用    可用状态是由PhoneStateListener监听而改变的是否可用;                     
     onClick()      mAdapter.getItem(which).onPress();        changeStateFromPress(nowon);          ? State.TurningOn : State.TurningOff;

        

热点排行