在源码开发中,有很多时候是需要配置运营商相关的内容的,这个时候就不需要根据不同的运营商配置不同的属性,通常分为以下几个步骤完成
第一步:通过mccmnc(移动国家代码+移动网络代码)确认CarrierId
代码目录为 packages/providers/TelephonyProvider/assets/carrier_list.textpb
![]ot}(nf@y$il.png](https://img.haomeiwen.com/i14506461/367eb58366588eb0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如上面的图片中就是中国联通和中国移动对应的carrierId,分别为1436,1435
第二步:根据CarrierId找到对应的修改文件
代码目录为packages/app/CarrierConfig/assets
[图片上传失败...(image-bdb6cf-1591010351293)]
如上面的图片中就是中国移动和中国联通carrierId对应的文件
[图片上传失败...(image-6789e-1591010351293)]
如上图就是我添加的Dialer模块语音信箱的功能,需求是要插入中国联通,电信,移动卡能够编辑语音信箱
注意:res/xml/vendor中的修改是对所有运营商有效,一般来讲需要问清楚需求,为哪几个运营商配置,不可一刀切
[图片上传失败...(image-3997d0-1591010351293)]
第三步:验证改动效果
1.删除手机缓存设置/data/user_de/0/com.android.phone/files中的所有文件
2.插入运营商卡验证
[图片上传失败...(image-6e320a-1591010351293)]
因为我的手机插入的是联通卡,所以这个目录下面有两个问题文件,一个是默认文件vender.xml,另一个是运营商的文件1436.xml,可以pull出来看这个文件里面的值是否有改变,一般来讲,优先读取相关的运营商文件,后读取vender文件
特殊情况
当在carrier_list下通过mccmnc无法搜到carrierId,可以直接在packages/app/CarrierConfig/assets中添加配置信息,但是一定要先搜索,因为CarrierId的优先级高于直接建立,所以你会在packages/app/CarrierConfig/assets下面看见很多类似下面图片中的定义
[图片上传失败...(image-631c6d-1591010351293)]
一些常见的配置
vowifi
默认WiFi Calling的开关为false,需要配置默认为开,添加:
<boolean name="carrier_default_wfc_ims_enabled_bool" value="true"/>
默认 WiFi Calling是WiFi优先,需要配置数据优先,添加:
<int name="carrier_default_wfc_ims_mode_int" value="1"/>
volte
配置支持volte功能:
<boolean name="carrier_volte_available_bool" value="true"/>
默认支持video calling功能
<boolean name="carrier_vt_available_bool" value="true"/>
voice mail
语音信箱可编辑
<boolean name="oem_key_remove_vm_num_editable_bool" value="false"/>
网友评论