Data/voice call/sms默认卡设定客制化
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
很多客户要求在开机的时候根据SIM卡插入的情况去设置默认的Data/voice call/SMS
[SOLUTION]
对于L0上:
初始化时,SubInfoRecordUpdater将会去调用SubscriptionManager去设置DefaulSMSSubId和
DefaultVoiceCallSubId,但是在SubscriptionController中对于DefaultVoiceCallSubId和
DefaultSMSSubId设置仅仅是把对应SubId保存在全局的数据库中,然后send broADCast (forDefaultVoiceCallSubId intent ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED,forDefaultSMSSubId intent ACTION_DEFAULT_DEFAULT_SMS_SUBSCRIPTION_CHANGED),在
DefaultVoiceCallSubId TelecomAccountRegistry.java中接受广播进行设置(这部分可能需要客户客制化)。
DefaultDataSubId在开机时并不会去设置,若客户需要客制化可以在
SubInfoRecordUpdater.java中对方法setAllDefaultSub(List<SubInfoRecord> subInfos)中添加对DefaultDataSubId的设置。
代码修改如下:

TelecomAccountRegistry.java接受广播ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED和
ACTION_DEFAULT_DEFAULT_SMS_SUBSCRIPTION_CHANGED进行设置
1、TelecomAccountRegistry.java中注册加对应的broadcast
private void setupOnBoot() {
IntentFiLTEr intentFilter = new IntentFilter();
// Receive extended broadcasts like IMS state changed
intentFilter.adDACtion(TelephonyIntents.ACTION_IMS_STATE_CHANGED);
//add new broadcast
intentFilter.addAction(TelephonyIntents.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);
mContext.registerReceiver(mReceiver, intentFilter);
}
2、在TelecomAccountRegistry中的receiver中添加对新增加的broadcast处理如下图所示:

然后添加一个新的方法:
对于L1上:
Google design是让用户自己去选择,所以在simsetting中静态注册了broadcast
ACTION_SUBINFO_RECORD_UPDATED,在SimBootReceiver.java中接受这个broadcast进行判断处理弹
出对应的dialog让user做选择。所以客户可以在此文件中做客制化去set DefaultsubId而不是弹出
dialog让user选择。具体修改如下:
SimBootReceiver.java在onReceive中的修改如下:

新增加的方法的实现:
setDefaultSmsSubId

setUserSelectedOutgoingPhoneAccout也就是DefaultVoiceSubId

setDefaultDataSubId

subscriptionIdToPhoneAccountHandle

注意:在L1上若是两张SIM卡,上面对Sms和Voice set default 是设置为“每次
都询问”,客户可以自己根据自己的需求进行客制化。
很多客户要求在开机的时候根据SIM卡插入的情况去设置默认的Data/voice call/SMS
[SOLUTION]
对于L0上:
初始化时,SubInfoRecordUpdater将会去调用SubscriptionManager去设置DefaulSMSSubId和
DefaultVoiceCallSubId,但是在SubscriptionController中对于DefaultVoiceCallSubId和
DefaultSMSSubId设置仅仅是把对应SubId保存在全局的数据库中,然后send broADCast (forDefaultVoiceCallSubId intent ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED,forDefaultSMSSubId intent ACTION_DEFAULT_DEFAULT_SMS_SUBSCRIPTION_CHANGED),在
DefaultVoiceCallSubId TelecomAccountRegistry.java中接受广播进行设置(这部分可能需要客户客制化)。
DefaultDataSubId在开机时并不会去设置,若客户需要客制化可以在
SubInfoRecordUpdater.java中对方法setAllDefaultSub(List<SubInfoRecord> subInfos)中添加对DefaultDataSubId的设置。
代码修改如下:

TelecomAccountRegistry.java接受广播ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED和
ACTION_DEFAULT_DEFAULT_SMS_SUBSCRIPTION_CHANGED进行设置
1、TelecomAccountRegistry.java中注册加对应的broadcast
private void setupOnBoot() {
IntentFiLTEr intentFilter = new IntentFilter();
// Receive extended broadcasts like IMS state changed
intentFilter.adDACtion(TelephonyIntents.ACTION_IMS_STATE_CHANGED);
//add new broadcast
intentFilter.addAction(TelephonyIntents.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED);
mContext.registerReceiver(mReceiver, intentFilter);
}
2、在TelecomAccountRegistry中的receiver中添加对新增加的broadcast处理如下图所示:

然后添加一个新的方法:
对于L1上:
Google design是让用户自己去选择,所以在simsetting中静态注册了broadcast
ACTION_SUBINFO_RECORD_UPDATED,在SimBootReceiver.java中接受这个broadcast进行判断处理弹
出对应的dialog让user做选择。所以客户可以在此文件中做客制化去set DefaultsubId而不是弹出
dialog让user选择。具体修改如下:
SimBootReceiver.java在onReceive中的修改如下:

新增加的方法的实现:
setDefaultSmsSubId

setUserSelectedOutgoingPhoneAccout也就是DefaultVoiceSubId

setDefaultDataSubId

subscriptionIdToPhoneAccountHandle

注意:在L1上若是两张SIM卡,上面对Sms和Voice set default 是设置为“每次
都询问”,客户可以自己根据自己的需求进行客制化。
