Radio 对应相关的Log:
<GET_SIM_STATUS APPSTATE_PIN MSimIccCardProxy: ACTION_SIM_STATE_CHANGED rease PIN
Logcat对应的Log:
KeyguardUpdateMonitor:ACTION_SIM_STATE_CHANGED
KeyguardUpdateMonitor:handleSimStateChange:intentValue=PIN_REQUI
MSimLockPatternKeyguardView:createUnlockScreenFor(SimPin);
MSimLockPatternKeyguardView:Display SimUnlockScreen for sub:
1、流程:
MSimIccCardProxy.java
发送广播 broadcastStickyIntent(,)(reason=PIN 参数)
接受广播的类:
  KeyguardUpdateMonitor.javaTelephonyIntents.ACTION_SIM_STATE_CHANGEDSimArgs.fromIntent(intent)obtainMessage:MSG_SIM_STATE_CHANGED   //334 LinehandleSimStateChange((SimArgs) msg.obj);  //211 LineonSimStateChanged(state, subscription);KeyguardViewMediator.javaonSimStateChanged( , );!isShowing() doKeyguardLocked( )resetStateLocked( )
2、PIN是否在Settings中选中的流程:
   IccLockSettings.javagetIccLockEnabled()IccCardProxy.javagetIccLockEnabled()mUiccApplication.getIccLockEnabled()getPin1State()mPin1Statereturn  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.javatryChangeIccLockState()UiccCardLockEnabledsetIccLockEnabled( , , )RIL.javasetFacilityLockForApp( , , , , , )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.javamGlobalActions.showDialog(KeyguardShowing, isDeviceProvisioned());GlobalActions.javashowDialog( , );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;

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

  1. Android开启/关闭飞行模式命令

    1.打开飞行模式 # adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state true2.关闭飞行模式 # a ...

  2. Android 9.0 飞行模式下WiFi状态变化

    关注我,更多程序猿的日常信息等你哦 在Android 9.0 中,AirPlaneMode与WiFi的原生设定是这样的: 1.开启飞行模式时,如果wifi打开,则关闭,如果是关闭状态则不处理. 2.开 ...

  3. Android 10.0 飞行模式下禁用NFC功能

    在测试中发现,打开飞行模式以后,wifi和蓝牙都关闭了,nfc还是能打开的,这也是原生系统的一个bug,客户要求开启飞行模式的时候 禁用nfc,就是 不能打开nfc,既然发现了就必须解决掉这个问题 通 ...

  4. Android判断是否飞行模式已经监听飞行模式

    1.判断是否飞行模式: private boolean isAirPlaneModeOn(){int mode = 0;try {mode = Settings.Global.getInt(getCo ...

  5. android 7.1飞行模式,想不到飞行模式原来是这样用的!又get了一个神技能!

    原标题:想不到飞行模式原来是这样用的!又get了一个神技能! 说到飞行模式,大家的第一反应就是坐飞机的时候用的,平常生活中根本用不倒.但其实飞行模式在平常生活中有几大妙用是我们很少会注意到的,今天我们 ...

  6. android+去掉飞行模式,在Android中关闭飞行模式

    请参阅下面的代码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanc ...

  7. android 判断 飞行模式,如何在Android上检测飞行模式?

    叮当猫咪 通过扩展Alex的答案以包括SDK版本检查,我们可以:/** * Gets the state of Airplane Mode. *  * @param context * @return ...

  8. android 飞行模式 配置 wifi可用,飞行模式也能用Wi-Fi

    Android手机的飞行模式就是一竿子关闭包括通讯.Wi-Fi.蓝牙和NFC在内的所有无线功能.但有时我们只需飞行模式的省电,却又希望单独开启Wi-Fi,此时应该如何设置呢? 以OPPO手机为例,RO ...

  9. android 飞行模式 wifi,飞行模式下怎么使用WiFi 飞行模式下开WiFi方法

    大家在使用Android手机的飞行模式时一般会遇到这样的问题,就是在飞行模式下,通讯.Wi-Fi.蓝牙和NFC在内的所有无线功能都会关闭,可是有时我们只需飞行模式的省电,却又希望单独开启Wi-Fi,此 ...

最新文章

  1. 企业的核心竞争力是什么
  2. python装饰器函数执行后日志_Python装饰器使用规范案例详解
  3. 先出报表还是先计提所得税_一道大综合题搞定“与子公司的内部交易合并报表抵销分录”的逻辑...
  4. laravel简单的laragon环境搭建不需要composer一键集成
  5. 超棒!纯Rust编写的机器学习框架,速度堪比PyTorch
  6. (Object detection)目标检测从入门到精通——第一部分
  7. 8块钱搞定一个顶级域名 (全过程) B篇
  8. Linux内核list_head学习(二)
  9. 正态分布某一点的概率怎么算_笔记|复习金融计量中概率随笔1(样本推整体)
  10. yarn依赖管理工具,和fis3构建工具 gulp详细用法
  11. 惠普企业级服务器型号,惠普企业级服务器HP rx8640
  12. 2008年java占有率_2008年中国城市GDP排名 目前最精确的数据(国家统计局排名):...
  13. java线程栅栏_java 线程栅栏
  14. UVALive 7178 Irrational Roots 多项式的根
  15. vue3.0 透传 Attribute
  16. 分治法实现寻找数组最大最小值
  17. 面向Web服务的游戏设计1:选择适合的Silverlight通信技术
  18. 2022-2028全球与中国成人注意力缺陷和多动障碍市场现状及未来发展趋势
  19. Linux装在移动硬盘里,将ubuntu系统安装在移动硬盘里
  20. android高仿股票源码,从0到1开发 股票分析APP(附源码)

热门文章

  1. 图解Team Foundation Server 2013系列
  2. 判断两个日期相差的天数
  3. 凸包练习: POJ 2187(JAVA)
  4. 有没有能够很快上手的报表框架
  5. OOAD实践之路——真实案例解析OO理论与实践(五、需求分析之前的故事)
  6. 使用as3crypto在Flex中实现AES加密
  7. 小白学爬虫——第一部分:简单学习Python
  8. codeforces1013E - DP
  9. 2018年宝鸡市三检文科数学题目解答
  10. tomcatserver管理界面username和password忘记