Default sim setting客制化(开机提示-新卡插入/有卡拔除)
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
JB2上mtk从GEMINI逻辑中抽离Default SIM setting相关itEMS供客户客制化 (开机提示-新卡插入/有卡拔除)
[SOLUTION]
1. 在JB2之前版本:
这个分代码没有放出来,无法客制化。
2. 在JB2中:
此过程发生在DefaultSIMSettings.java的onAllIccidQueryComplete()方法中
根据新卡插入的个数, 之前插入的iccid和当前插入的iccid比较来决定是否要发送广播
ACTION_SIM_DETECTED
该广播携带一个extra,用于指定是新卡插入、卡交换或者卡移除。
这个广播和JB3/JB5不同的地方是:JB2上是立即发出, JB2之后是等到特定情况下才会发出。
3. 在JB3/JB5/KK/KK2 版本中
此过程发生在SIMInfoUpdate.java的updateSimInfoByIccid()方法中
根据之前插在卡槽上的iccid和当前插在卡槽上的iccid进行对比,得出一个状态信息mInsertSimState[]
在该方法尾部根据新卡插入的个数和mInsertSimState[]的值,呼叫setUpdateData()方法发送广播
ACTION_SIM_DETECTED
该广播携带一个extra,取值如下:
EXTRA_VALUE_NEW_SIM
EXTRA_VALUE_REPOSITION_SIM
EXTRA_VALUE_REMOVED_SIM
这个extra的取值就是由mInsertSimState[]来决定:
然后Keyguard KeyguardDialogManager.Java 会接到这个广播,根据EXTRA来显示dialog信
息(新卡插入,卡交换或移除等)。
不过这里需要关注一下,在setUpdateData()里发广播之前都会呼叫isAllowedToShowSimDialog()方
法
此方式是看当前是否允许发送广播(mAllowShowNewSim[])。符合以下几种状态就允许发送
(1)SIM ME/PIN/PUK解锁
(2)忽略SIM ME/PIN/PUK的解锁
(3)飞行模式
(4)对应的sim的radio是off。
并且是所有所插入的sim的状态都mAllowShowNewSim[] == true的时候才允许发送。
4. L版本上:
/alps/php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/opt/telephony/src/java/com/android/internal/telephony/Sub
InfoRecordUpdater.java updateSimInfoByIccid()方法中
根据之前插在卡槽上的iccid和当前插在卡槽上的iccid进行对比,得出一个状态信息
sInsertSimState[]
在该方法尾部根据新卡插入的个数和mInsertSimState[]的值,呼叫setUpdateData()方法发
送广播ACTION_SUBINFO_RECORD_UPDATED
该广播携带一个extra,取值如下:
EXTRA_VALUE_NEW_SIM
EXTRA_VALUE_REPOSITION_SIM
EXTRA_VALUE_REMOVED_SIM
EXTRA_VALUE_NOCHANGE
这个extra的取值就是由sInsertSimState[], 以及根据之前插在卡槽上的iccid和当前插在卡
槽上的iccid来获取.
特别说明,在L上面不会有“新卡插入/有卡拔出”的dialog提示框;而是更换为”SIM卡有变动
”等notification.
/alps/packages/apps/Settings/src/com/mediatek/settings/sim
/SubDefaultNotifyReceiver.java
接收ACTION_SUBINFO_RECORD_UPDATED handleSubInfoUpdateAction() 会显示2种
notification
Type A "extra=NEW_SIM,REPOSITION_SIM, REMOVED_SIM" 或者“extra=NOCHANGE,且
有default Setting没有设置” 时显示
Type CsimCount==0时显示
JB2上mtk从GEMINI逻辑中抽离Default SIM setting相关itEMS供客户客制化 (开机提示-新卡插入/有卡拔除)
[SOLUTION]
1. 在JB2之前版本:
这个分代码没有放出来,无法客制化。
2. 在JB2中:
此过程发生在DefaultSIMSettings.java的onAllIccidQueryComplete()方法中
根据新卡插入的个数, 之前插入的iccid和当前插入的iccid比较来决定是否要发送广播
ACTION_SIM_DETECTED
该广播携带一个extra,用于指定是新卡插入、卡交换或者卡移除。
这个广播和JB3/JB5不同的地方是:JB2上是立即发出, JB2之后是等到特定情况下才会发出。
3. 在JB3/JB5/KK/KK2 版本中
此过程发生在SIMInfoUpdate.java的updateSimInfoByIccid()方法中
根据之前插在卡槽上的iccid和当前插在卡槽上的iccid进行对比,得出一个状态信息mInsertSimState[]
在该方法尾部根据新卡插入的个数和mInsertSimState[]的值,呼叫setUpdateData()方法发送广播
ACTION_SIM_DETECTED
该广播携带一个extra,取值如下:
EXTRA_VALUE_NEW_SIM
EXTRA_VALUE_REPOSITION_SIM
EXTRA_VALUE_REMOVED_SIM
这个extra的取值就是由mInsertSimState[]来决定:
然后Keyguard KeyguardDialogManager.Java 会接到这个广播,根据EXTRA来显示dialog信
息(新卡插入,卡交换或移除等)。
不过这里需要关注一下,在setUpdateData()里发广播之前都会呼叫isAllowedToShowSimDialog()方
法
此方式是看当前是否允许发送广播(mAllowShowNewSim[])。符合以下几种状态就允许发送
(1)SIM ME/PIN/PUK解锁
(2)忽略SIM ME/PIN/PUK的解锁
(3)飞行模式
(4)对应的sim的radio是off。
并且是所有所插入的sim的状态都mAllowShowNewSim[] == true的时候才允许发送。
4. L版本上:
/alps/php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks/opt/telephony/src/java/com/android/internal/telephony/Sub
InfoRecordUpdater.java updateSimInfoByIccid()方法中
根据之前插在卡槽上的iccid和当前插在卡槽上的iccid进行对比,得出一个状态信息
sInsertSimState[]
在该方法尾部根据新卡插入的个数和mInsertSimState[]的值,呼叫setUpdateData()方法发
送广播ACTION_SUBINFO_RECORD_UPDATED
该广播携带一个extra,取值如下:
EXTRA_VALUE_NEW_SIM
EXTRA_VALUE_REPOSITION_SIM
EXTRA_VALUE_REMOVED_SIM
EXTRA_VALUE_NOCHANGE
这个extra的取值就是由sInsertSimState[], 以及根据之前插在卡槽上的iccid和当前插在卡
槽上的iccid来获取.
特别说明,在L上面不会有“新卡插入/有卡拔出”的dialog提示框;而是更换为”SIM卡有变动
”等notification.
/alps/packages/apps/Settings/src/com/mediatek/settings/sim
/SubDefaultNotifyReceiver.java
接收ACTION_SUBINFO_RECORD_UPDATED handleSubInfoUpdateAction() 会显示2种
notification
Type A "extra=NEW_SIM,REPOSITION_SIM, REMOVED_SIM" 或者“extra=NOCHANGE,且
有default Setting没有设置” 时显示
Type CsimCount==0时显示
xuexi