在源碼開(kāi)發(fā)中,有很多時(shí)候是需要配置運(yùn)營(yíng)商相關(guān)的內(nèi)容的,這個(gè)時(shí)候就不需要根據(jù)不同的運(yùn)營(yíng)商配置不同的屬性,通常分為以下幾個(gè)步驟完成
第一步:通過(guò)mccmnc(移動(dòng)國(guó)家代碼+移動(dòng)網(wǎng)絡(luò)代碼)確認(rèn)CarrierId
代碼目錄為 packages/providers/TelephonyProvider/assets/carrier_list.textpb
![]ot}(nf@y$il.png](https://upload-images.jianshu.io/upload_images/14506461-367eb58366588eb0.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如上面的圖片中就是中國(guó)聯(lián)通和中國(guó)移動(dòng)對(duì)應(yīng)的carrierId,分別為1436,1435
第二步:根據(jù)CarrierId找到對(duì)應(yīng)的修改文件
代碼目錄為packages/app/CarrierConfig/assets
[圖片上傳失敗...(image-bdb6cf-1591010351293)]
如上面的圖片中就是中國(guó)移動(dòng)和中國(guó)聯(lián)通carrierId對(duì)應(yīng)的文件
[圖片上傳失敗...(image-6789e-1591010351293)]
如上圖就是我添加的Dialer模塊語(yǔ)音信箱的功能,需求是要插入中國(guó)聯(lián)通,電信,移動(dòng)卡能夠編輯語(yǔ)音信箱
注意:res/xml/vendor中的修改是對(duì)所有運(yùn)營(yíng)商有效,一般來(lái)講需要問(wèn)清楚需求,為哪幾個(gè)運(yùn)營(yíng)商配置,不可一刀切
[圖片上傳失敗...(image-3997d0-1591010351293)]
第三步:驗(yàn)證改動(dòng)效果
1.刪除手機(jī)緩存設(shè)置/data/user_de/0/com.android.phone/files中的所有文件
2.插入運(yùn)營(yíng)商卡驗(yàn)證
[圖片上傳失敗...(image-6e320a-1591010351293)]
因?yàn)槲业氖謾C(jī)插入的是聯(lián)通卡,所以這個(gè)目錄下面有兩個(gè)問(wèn)題文件,一個(gè)是默認(rèn)文件vender.xml,另一個(gè)是運(yùn)營(yíng)商的文件1436.xml,可以pull出來(lái)看這個(gè)文件里面的值是否有改變,一般來(lái)講,優(yōu)先讀取相關(guān)的運(yùn)營(yíng)商文件,后讀取vender文件
特殊情況
當(dāng)在carrier_list下通過(guò)mccmnc無(wú)法搜到carrierId,可以直接在packages/app/CarrierConfig/assets中添加配置信息,但是一定要先搜索,因?yàn)镃arrierId的優(yōu)先級(jí)高于直接建立,所以你會(huì)在packages/app/CarrierConfig/assets下面看見(jiàn)很多類似下面圖片中的定義
[圖片上傳失敗...(image-631c6d-1591010351293)]
一些常見(jiàn)的配置
vowifi
默認(rèn)WiFi Calling的開(kāi)關(guān)為false,需要配置默認(rèn)為開(kāi),添加:
<boolean name="carrier_default_wfc_ims_enabled_bool" value="true"/>
默認(rèn) WiFi Calling是WiFi優(yōu)先,需要配置數(shù)據(jù)優(yōu)先,添加:
<int name="carrier_default_wfc_ims_mode_int" value="1"/>
volte
配置支持volte功能:
<boolean name="carrier_volte_available_bool" value="true"/>
默認(rèn)支持video calling功能
<boolean name="carrier_vt_available_bool" value="true"/>
voice mail
語(yǔ)音信箱可編輯
<boolean name="oem_key_remove_vm_num_editable_bool" value="false"/>