一種定制應(yīng)用程序啟動(dòng)控制方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)通信技術(shù)領(lǐng)域,尤其涉及一種定制應(yīng)用程序啟動(dòng)控制方法及裝置。
【背景技術(shù)】
[0002]隨著第三代(3G)移動(dòng)通信技術(shù)時(shí)代的到來,終端的網(wǎng)絡(luò)制式除了傳統(tǒng)的全球移動(dòng)通信系統(tǒng)(GSM)和碼分多址(CDMA)外,又增加了寬帶碼分多址(WCDMA)、CDMA200以及時(shí)分同步碼分多址(TD-SCDMA)等網(wǎng)絡(luò)制式。現(xiàn)在,各網(wǎng)絡(luò)運(yùn)營商都希望通過公開渠道出售的手機(jī)在插入運(yùn)營商的SM卡后,能夠顯示運(yùn)營商的自有業(yè)務(wù),比如網(wǎng)絡(luò)設(shè)置,打開瀏覽器顯示的首頁,應(yīng)用等等。
[0003]目前,已知的方法是:使用android操作系統(tǒng)中的開機(jī)啟動(dòng)機(jī)制讀取SM卡的PLMN的參數(shù)(包括移動(dòng)國家號(hào)碼MNC、移動(dòng)網(wǎng)號(hào)MCC),并根據(jù)讀取到的參數(shù)加載對(duì)應(yīng)的資源。但是,在使用android默認(rèn)的開機(jī)啟動(dòng)機(jī)制讀到PLMN的參數(shù)值時(shí),Android程序安裝包APK的加載過程已經(jīng)結(jié)束,此時(shí)就無法再根據(jù)PLMN的參數(shù)值來加載APK。否則,就需要重啟手機(jī),在下次啟動(dòng)的過程中根據(jù)上次讀到的PLMN值去加載APK。因此,通過重啟手機(jī)來加載APK的體驗(yàn)對(duì)用戶來說,很可能被認(rèn)為是手機(jī)故障。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是提供一種定制應(yīng)用程序啟動(dòng)控制方法及裝置,能夠在操作系統(tǒng)啟動(dòng)前獲取SIM卡的PLMN值,并在操作系統(tǒng)啟動(dòng)后進(jìn)行定制的應(yīng)用程序的加載,可以避免重啟手機(jī)加載定制APK的情況。
[0005]為解決上述問題,本發(fā)明提供一種定制應(yīng)用程序啟動(dòng)控制方法,所述方法包括:執(zhí)行終端系統(tǒng)初始化啟動(dòng),并獲取所述終端當(dāng)前SIM卡的公共陸地移動(dòng)網(wǎng)絡(luò)PLMN值;啟動(dòng)操作系統(tǒng)并根據(jù)所述當(dāng)前SIM卡的PLMN值加載對(duì)應(yīng)的應(yīng)用程序;以及啟動(dòng)所述應(yīng)用程序。
[0006]其中,啟動(dòng)操作系統(tǒng)并根據(jù)所述當(dāng)前SIM卡的PLMN值加載對(duì)應(yīng)的應(yīng)用程序的步驟具體為:啟動(dòng)操作系統(tǒng)并將所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性;根據(jù)所述當(dāng)前SIM卡的PLMN值從所述終端的運(yùn)營商應(yīng)用程序列表中獲取對(duì)應(yīng)的應(yīng)用程序;其中,所述運(yùn)營商應(yīng)用程序列表記錄了 SIM卡的PLMN值與對(duì)應(yīng)的應(yīng)用程序;以及加載所述應(yīng)用程序。
[0007]其中,將所述當(dāng)前SM卡的PLMN值寫入系統(tǒng)屬性的步驟之前,所述方法還包括:判斷所述當(dāng)前SIM卡的PLMN值是否在所述運(yùn)營商應(yīng)用程序列表中;若是,則執(zhí)行所述將所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性的步驟,否則,則確定沒有相應(yīng)的資源可以加載。
[0008]其中,當(dāng)確定所述當(dāng)前SIM卡的PLMN值在所述運(yùn)營商應(yīng)用程序列表中時(shí),所述方法還包括:判斷所述終端保存的SM卡的PLMN值與所述當(dāng)前SM卡的PLMN值是否相同;若是,則直接執(zhí)行所述加載所述應(yīng)用程序的步驟;否則,則執(zhí)行所述將所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性的步驟。
[0009]其中,當(dāng)確定所述終端保存的SM卡的PLMN值與所述當(dāng)前SM卡的PLMN值不同時(shí),啟動(dòng)所述應(yīng)用程序的步驟之后,所述方法還包括:保存所述當(dāng)前SIM卡的PLMN值。
[0010]為解決上述問題,本發(fā)明還提供一種定制應(yīng)用程序啟動(dòng)控制裝置,所述裝置包括:第一獲取模塊,用于在所述裝置執(zhí)行系統(tǒng)初始化啟動(dòng)后獲取所述裝置當(dāng)前SIM卡的公共陸地移動(dòng)網(wǎng)絡(luò)PLMN值;加載模塊,用于啟動(dòng)操作系統(tǒng)并根據(jù)所述第一獲取模塊獲取的所述當(dāng)前SIM卡的PLMN值加載對(duì)應(yīng)的應(yīng)用程序;執(zhí)行模塊,用于啟動(dòng)所述應(yīng)用程序。
[0011]其中,所述裝置還包括第二獲取模塊,用于將所述第一獲取模塊獲取的所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性,并根據(jù)所述當(dāng)前SIM卡的PLMN值從運(yùn)營商應(yīng)用程序列表中獲取對(duì)應(yīng)的應(yīng)用程序;其中,所述運(yùn)營商應(yīng)用程序列表記錄了 SIM卡的PLMN值與對(duì)應(yīng)的應(yīng)用程序;所述加載模塊加載所述第二獲取模塊獲取的所述應(yīng)用程序。
[0012]其中,所述裝置還包括判斷模塊,用于判斷所述第一獲取模塊獲取的所述當(dāng)前SM卡的PLMN值是否在所述運(yùn)營商應(yīng)用程序列表中;當(dāng)確定所述當(dāng)前SIM卡的PLMN值在所述運(yùn)營商應(yīng)用程序列表中時(shí),所述第二獲取模塊將所述第一獲取模塊獲取的所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性;當(dāng)確定所述當(dāng)前SIM卡的PLMN值不在所述運(yùn)營商應(yīng)用程序列表中時(shí),所述加載模塊確定沒有相應(yīng)的應(yīng)用程序可以加載。
[0013]其中,當(dāng)確定所述當(dāng)前SIM卡的PLMN值在所述運(yùn)營商應(yīng)用程序列表中時(shí),所述判斷模塊還用于判斷所述裝置保存的SIM卡的PLMN值與所述當(dāng)前SM卡的PLMN值是否相同;當(dāng)確定所述裝置保存的SIM卡的PLMN值與所述當(dāng)前SIM卡的PLMN值相同時(shí),所述加載模塊直接加載所述應(yīng)用程序;當(dāng)確定所述裝置保存的SIM卡的PLMN值與所述當(dāng)前SIM卡的PLMN值不同時(shí),所述第二獲取模塊將所述第一獲取模塊獲取的所述當(dāng)前SIM卡的PLMN值寫入系統(tǒng)屬性。
[0014]其中,所述裝置還包括信息保存模塊,當(dāng)所述判斷模塊確定所述裝置保存的SIM卡的PLMN值與所述當(dāng)前SIM卡的PLMN值不同時(shí),所述信息保存模塊在所述執(zhí)行模塊啟動(dòng)所述應(yīng)用程序后保存所述當(dāng)前SIM卡的PLMN值。
[0015]本發(fā)明提供的一種定制應(yīng)用程序啟動(dòng)控制方法及裝置,在進(jìn)行系統(tǒng)初始化啟動(dòng)時(shí)獲取當(dāng)前SIM卡的PLMN值,并在啟動(dòng)操作系統(tǒng)時(shí)根據(jù)該當(dāng)前SIM卡的PLMN值加載對(duì)應(yīng)的應(yīng)用程序,以及啟動(dòng)該應(yīng)用程序。在系統(tǒng)初始化時(shí)獲取SIM卡的PLMN值,并在操作系統(tǒng)啟動(dòng)后進(jìn)行定制的應(yīng)用程序的加載,可以避免重啟手機(jī)加載定制APK的情況。
【附圖說明】
[0016]圖1為本發(fā)明一實(shí)施方式中的一種定制應(yīng)用程序啟動(dòng)控制方法的流程示意圖;
[0017]圖2為本發(fā)明一實(shí)施方式中的根據(jù)當(dāng)前SIM卡的PLMN值加載應(yīng)用程序方法的流程不意圖;
[0018]圖3為本發(fā)明第一實(shí)施方式中的一種定制應(yīng)用程序啟動(dòng)控制裝置的結(jié)構(gòu)示意圖;
[0019]圖4為本發(fā)明第二實(shí)施方式中的一種定制應(yīng)用程序啟動(dòng)控制裝置的結(jié)構(gòu)示意圖;
[0020]圖5為本發(fā)明第三實(shí)施方式中的一種定制應(yīng)用程序啟動(dòng)控制裝置的結(jié)構(gòu)示意圖。
[0021]元件標(biāo)號(hào):
[0022]裝置30、40、50
[0023]第一獲取模塊31、42、51
[0024]加載模塊32、43、54
[0025]執(zhí)行模塊33、44、55
[0026]控制模塊41、
[0027]Boot 程序410
[0028]Bootloader411
[0029]Kernel412
[0030]第二獲取模塊52
[0031]判斷模塊53
[0032]信息保存模塊56
【具體實(shí)施方式】
[0033]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、構(gòu)造特征、所實(shí)現(xiàn)目的及效果,以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說明。
[0034]請(qǐng)參閱圖1,為本發(fā)明一實(shí)施方式中的一種定制應(yīng)用程序啟動(dòng)控制方法的流程示意圖。該實(shí)施方式示出的定制應(yīng)用程序啟動(dòng)控制方法包括如下步驟:
[0035]步驟S10,執(zhí)行終端系統(tǒng)初始化啟動(dòng),并獲取該終端當(dāng)前SM卡的公共陸地移動(dòng)網(wǎng)絡(luò)PLMN值。
[0036]其中,PLMN值包括移動(dòng)國家號(hào)碼MCC值和移動(dòng)網(wǎng)號(hào)MNC值,能夠表示SIM卡的狀態(tài)以及所屬運(yùn)營商。
[0037]步驟S11,啟動(dòng)操作系統(tǒng)并根據(jù)該當(dāng)前SIM卡的PLMN值加載對(duì)應(yīng)的應(yīng)用程序。
[0038]在本實(shí)施方式中,裝置預(yù)先存儲(chǔ)一運(yùn)營商應(yīng)用程序列表,根據(jù)當(dāng)前SIM卡的PLMN值在該運(yùn)營商應(yīng)用程序列表中查找到匹配的應(yīng)用程序,從而加載該應(yīng)用程序。其中,該應(yīng)用程序可以是運(yùn)營商定制程序,例如,基于移動(dòng)網(wǎng)絡(luò)的音樂播放程序、基于聯(lián)通網(wǎng)絡(luò)的聊天軟件等等。
[0039]步驟S12,啟動(dòng)該應(yīng)用程序。
[0040]當(dāng)系統(tǒng)完成初始化后,獲取當(dāng)前SIM卡的PLMN值,然后在操作系統(tǒng)啟動(dòng)時(shí)加載該SIM卡的PLMN值對(duì)應(yīng)的應(yīng)用程序,從而實(shí)現(xiàn)根據(jù)SIM卡的運(yùn)營商在終端開機(jī)時(shí)安裝加載相應(yīng)定制的應(yīng)用程序。
[0041]下面將以基于Linux操作平臺(tái)的Android嵌入式操作系統(tǒng)為例對(duì)本發(fā)明進(jìn)行說明。
[0042]第一步:啟動(dòng)Linux操作系統(tǒng),具體地,通過bootloader引導(dǎo)加載程序加載并執(zhí)行內(nèi)核文件Kernel,啟動(dòng)操作系統(tǒng)。
[0043]第二步,啟動(dòng)System Server,讀取系統(tǒng)屬性值gsm.sim.ril.mcc.mnc以獲取該終端當(dāng)前SIM卡的MCC、MNC值,讀取系統(tǒng)屬性值r0.ssv.mccmnclist以得到終端本機(jī)存儲(chǔ)的運(yùn)營商應(yīng)用程序列表,即mcc mnc列表。然后,判斷當(dāng)前SM卡的MCC、MNC值是否在指定的mcc mnc列表中:如果當(dāng)前SIM卡的MCC、MNC值在本機(jī)有對(duì)應(yīng)的值,則代表有對(duì)應(yīng)資源可以加載;否則,則代表沒有特殊的資源可以加載。
[0044]當(dāng)確定當(dāng)前SM卡的MCC、MNC值在本機(jī)有對(duì)應(yīng)的值時(shí),從/data/system/sim_status, xml中讀取〈pre_mccmnc>〈/pre_mccmnc>標(biāo)簽下的內(nèi)容,表示為上次手機(jī)中所使用的SM卡的MCC、MNC值。根據(jù)當(dāng)前的SM卡的MCC、MNC值和上一次保存SM卡的MCC、MNC值判斷SM卡是否有改變。應(yīng)用啟動(dòng)時(shí)調(diào)用isAppNeedChange函數(shù),確認(rèn)是否需要重置定制化資源。應(yīng)用調(diào)用appChangeComplete函數(shù),保存SIM卡切換信息。
[0045]第三步:啟動(dòng)嵌入式操作Android操作系統(tǒng)以及啟動(dòng)定制的應(yīng)用程序。
[0046]具體地,加載解析init.rc。其中,init過程需要?jiǎng)?chuàng)建系統(tǒng)文件夾并啟動(dòng)USB守護(hù)進(jìn)程、Android Debug Bridge 守護(hù)進(jìn)程、Debug 守護(hù)進(jìn)程、ServiceManager 進(jìn)程、Zygote 進(jìn)程等。
[0047]Service manager啟動(dòng),明確將哪些服務(wù)添加到service_list中,動(dòng)作添加到act1n_list中。掃描/system/framework目錄下的apk文件以確定所啟用的應(yīng)用程序,其中,/system/framework表示該目錄下的文件都是系統(tǒng)庫;/system/app表示該目錄下是默認(rèn)的系統(tǒng)應(yīng)用;/vendor/app表示該目錄下是廠商定制的應(yīng)用。
[0048]第四步:運(yùn)行package Manager,應(yīng)用應(yīng)用程序。
[0049]如上所述,在系統(tǒng)開機(jī)初始化后就讀取SM卡的MCC、MNC值,通過系統(tǒng)屬性值傳遞給系統(tǒng)Service,而系統(tǒng)Service和上層應(yīng)用就通過Binder調(diào)用對(duì)應(yīng)Manager的接口完成狀態(tài)判斷。然后,在系統(tǒng)開機(jī)后讀取SIM的MCC、MNC值,通過平臺(tái)提供的接口,重新修改ril的過程,把獲取SIM卡的MCC、MNC值寫入gsm.sim.ril.mcc.mnc屬性值,以后續(xù)進(jìn)行狀態(tài)判斷和應(yīng)用程序加載。
[0050]請(qǐng)參閱圖2,為本發(fā)明一實(shí)施方式中的根據(jù)當(dāng)前SIM卡的PLMN值加載應(yīng)用程序方法的流程示意圖。該實(shí)施方式示出的根據(jù)當(dāng)前SIM卡的PLMN值加載應(yīng)用程序的方法包括如下步驟: