Android 当存在双卡时,移动网络默认为SIM卡1

文章目录

一、当Android设备中存在双卡时,移动网络默认为SIM卡1

完成这个需求有以下两个修改点:

下面依旧是Android13 MTK平台,在MtkMultiSimSettingController.java的updateDefaults()方法中将移动网络设置为SIM1。

除此之外,当存在双卡时,开机进入到Launcher界面时,首先就会出现一个对话框让我们去选择使用SIM卡1还是SIM卡2。所以当我们设置为默认SIM卡1之后,这个弹窗我们也需要去除掉。

  1. 可以加入自己的判断,直接将autoFallbackEnabled重新赋值
  2. 也可以在frameworks/base/core/res/res/values/config.xml,修改config_voice_data_sms_auto_fallback

二、下面是完整的代码路径和修改点

java 复制代码
system/vendor/mediatek/proprietary/frameworks/opt/telephony/src/java/com/mediatek/internal/telephony/MtkMultiSimSettingController.java
java 复制代码
    @Override
    protected void updateDefaults() {
    	//........省略多余代码.........
    
        boolean dataSelected = updateDefaultValue(mPrimarySubList,
                mSubController.getDefaultDataSubId(),
                (newValue ->{
                
                    // The default mobile network is SIM 1
                    int defaultSubId = mSubController.getDefaultDataSubId();
                    if(defaultSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID){
                        int subId1 = mSubController.getSubIdUsingPhoneId(0);
                        if(subId1 == newValue){
                            mSubController.setDefaultDataSubId(newValue);
                        }
                    }
                }));
                // The default mobile network is SIM 1
                
         // Update default voice subscription.
        if (DBG) log("[updateDefaultValues] Update default voice subscription");
        boolean voiceSelected = updateDefaultValue(mPrimarySubList,
               	mSubController.getDefaultVoiceSubId(),
                (newValue -> mSubController.setDefaultVoiceSubId(newValue)));
                
		//........省略多余代码.........
	
        boolean autoFallbackEnabled = mContext.getResources().getBoolean(
                com.android.internal.R.bool.config_voice_data_sms_auto_fallback);

        // Based on config config_voice_data_sms_auto_fallback value choose voice/data/sms
        // preference auto selection logic or display notification for end used to
        // select voice/data/SMS preferences.
        
        // Removes the mobile network selection popup begin
        autoFallbackEnabled = true;
        // Removes the mobile network selection popup end
        
        if (!autoFallbackEnabled) {
            sendSubChangeNotificationIfNeeded(change, dataSelected, voiceSelected, smsSelected);
        } else {
            updateUserPreferences(mPrimarySubList, dataSelected, voiceSelected, smsSelected);
        }
    }

越想贴近事实,不明白的事情就越多。

相关推荐
feibafeibafeiba13 分钟前
Android 14 关于imageview设置动态padding值导致图标旋转的问题
android
tangweiguo030519871 小时前
ProcessLifecycleOwner 完全指南:优雅监听应用前后台状态
android·kotlin
介一安全2 小时前
【Frida Android】基础篇15(完):Frida-Trace 基础应用——JNI 函数 Hook
android·网络安全·ida·逆向·frida
吞掉星星的鲸鱼3 小时前
android studio创建使用开发打包教程
android·ide·android studio
陈老师还在写代码3 小时前
android studio 签名打包教程
android·ide·android studio
csj503 小时前
android studio设置
android
hifhf3 小时前
Android Studio gradle下载失败报错
android·ide·android studio
陈老师还在写代码3 小时前
android studio,java 语言。新建了项目,在哪儿设置 app 的名字和 logo。
android·java·android studio
2501_916007475 小时前
Fastlane 结合 开心上架(Appuploader)命令行实现跨平台上传发布 iOS App 的完整方案
android·ios·小程序·https·uni-app·iphone·webview
listhi5207 小时前
Vue.js 3的组合式API
android·vue.js·flutter