070]根據(jù)下文結(jié)合附圖對(duì)本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會(huì)更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【附圖說明】
[0071]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0072]圖1示出了根據(jù)本發(fā)明一實(shí)施例的處理應(yīng)用間鏈?zhǔn)絾?dòng)的方法的流程圖;
[0073]圖2示出了根據(jù)本發(fā)明另一實(shí)施例的處理應(yīng)用間鏈?zhǔn)絾?dòng)的方法的流程圖;
[0074]圖3示出了根據(jù)本發(fā)明一實(shí)施例的處理應(yīng)用間鏈?zhǔn)絾?dòng)的裝置的結(jié)構(gòu)示意圖;以及
[0075]圖4示出了根據(jù)本發(fā)明另一實(shí)施例的處理應(yīng)用間鏈?zhǔn)絾?dòng)的裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0076]下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0077]為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供了一種處理應(yīng)用間鏈?zhǔn)絾?dòng)的方法,該方法可以應(yīng)用在個(gè)人電腦、手機(jī)、手表或電子閱讀器等終端設(shè)備。圖1示出了根據(jù)本發(fā)明一實(shí)施例的處理應(yīng)用間鏈?zhǔn)絾?dòng)的方法的流程圖。參見圖1,該方法至少可以包括步驟S102至步驟S108。
[0078]步驟S102,監(jiān)聽?wèi)?yīng)用的啟動(dòng)事件。
[0079]步驟S104,當(dāng)監(jiān)聽到應(yīng)用發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件時(shí),截取調(diào)起事件。
[0080]步驟S106,查詢調(diào)起事件對(duì)應(yīng)的其他應(yīng)用是否為禁止調(diào)起的應(yīng)用,得到查詢結(jié)果。
[0081]步驟S108,根據(jù)步驟S106得到的查詢結(jié)果,確定是否執(zhí)行調(diào)起事件。
[0082]在本發(fā)明實(shí)施例中,應(yīng)用間鏈?zhǔn)絾?dòng),即是指某應(yīng)用被觸發(fā)啟動(dòng),該應(yīng)用在啟動(dòng)的過程中會(huì)調(diào)起其他應(yīng)用啟動(dòng),因此,本發(fā)明實(shí)施例監(jiān)聽?wèi)?yīng)用的啟動(dòng)事件,當(dāng)監(jiān)聽到應(yīng)用在啟動(dòng)的過程中發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件時(shí),截取該調(diào)起事件,進(jìn)而查詢該調(diào)起事件對(duì)應(yīng)的其他應(yīng)用是否為禁止調(diào)起的應(yīng)用,得到查詢結(jié)果,隨后根據(jù)查詢結(jié)果,確定是否執(zhí)行該調(diào)起事件,與現(xiàn)有技術(shù)中鏈?zhǔn)絾?dòng)中的在先應(yīng)用直接調(diào)起在后應(yīng)用的調(diào)起方式不同,本發(fā)明實(shí)施例對(duì)鏈?zhǔn)絾?dòng)的鏈接流程進(jìn)行判斷,若鏈接流程可執(zhí)行于觸發(fā)在后應(yīng)用,則啟動(dòng)在后應(yīng)用,若鏈接流程被中止,則選擇無需啟動(dòng)在后應(yīng)用。即,本發(fā)明實(shí)施例能夠選擇性地判斷是否啟動(dòng)鏈?zhǔn)絾?dòng)所涉及的在后應(yīng)用,相對(duì)于全部啟動(dòng)的方式,針對(duì)性和適應(yīng)性較強(qiáng),并能夠節(jié)約資源,從而實(shí)現(xiàn)對(duì)應(yīng)用間鏈?zhǔn)絾?dòng)進(jìn)行快速、有效地處理的目的。進(jìn)一步,本發(fā)明實(shí)施例中,當(dāng)該調(diào)起事件對(duì)應(yīng)的其他應(yīng)用為禁止調(diào)起的應(yīng)用時(shí),則確定不執(zhí)行該調(diào)起事件,從而通過阻斷執(zhí)行該調(diào)起事件的方式,阻止被確定為禁止調(diào)起的其他應(yīng)用被調(diào)起啟動(dòng),解決了現(xiàn)有技術(shù)中這些應(yīng)用在后臺(tái)運(yùn)行時(shí)占用終端的系統(tǒng)資源,加劇終端的電量消耗的問題。此外,當(dāng)該調(diào)起事件對(duì)應(yīng)的其他應(yīng)用不為禁止調(diào)起的應(yīng)用時(shí),則確定執(zhí)行該調(diào)起事件,從而通過執(zhí)行該調(diào)起事件,使得在一個(gè)應(yīng)用被觸發(fā)時(shí),一個(gè)或多個(gè)其他應(yīng)用能夠被鏈?zhǔn)絾?dòng),這樣就不需要針對(duì)各個(gè)其他應(yīng)用一個(gè)個(gè)去觸發(fā)啟動(dòng),省去了繁瑣的觸發(fā)操作,提高了應(yīng)用啟動(dòng)的效率。
[0083]通常情況下,應(yīng)用的啟動(dòng)可以由自身觸發(fā)(稱為應(yīng)用自啟),也可以由用戶來觸發(fā)(如用戶點(diǎn)擊桌面上的應(yīng)用圖標(biāo)),整個(gè)應(yīng)用的啟動(dòng)過程要執(zhí)行很多步驟,但是從整體上來看,以Android(安卓)系統(tǒng)為例,主要可以分為以下步驟Al至步驟A5:
[0084]步驟Al,Launcher (桌面啟動(dòng)器)通過Binder進(jìn)程間通信機(jī)制通知ActivityManagerService,它要啟動(dòng)一個(gè) Activity (Activity 是 Android 系統(tǒng)中最基本也是最為常見的四大組件之一,簡單的說,Activity就是布滿整個(gè)窗口或者懸浮于其他窗口上的交互界面。在一個(gè)應(yīng)用中通常由多個(gè)Activity構(gòu)成,都會(huì)在Manifest, xml中指定一個(gè)主的Activity,當(dāng)應(yīng)用第一次運(yùn)行時(shí)用戶就會(huì)看這個(gè)Activity,這個(gè)Activity可以通過啟動(dòng)其他的Activity進(jìn)行相關(guān)操作);
[0085]步驟A2,ActivityManagerService 通過 Binder 進(jìn)程間通信機(jī)制通知 Launcher 進(jìn)APaused(暫停)狀態(tài);
[0086]步驟A3,Launcher 通過 Binder 進(jìn)程間通信機(jī)制通知 ActivityManagerService,它已經(jīng)準(zhǔn)備就緒進(jìn)入Paused狀態(tài),于是ActivityManagerService就創(chuàng)建一個(gè)新的進(jìn)程,用來啟動(dòng)一個(gè)ActivityThread實(shí)例,即將要啟動(dòng)的Activity就是在這個(gè)ActivityThread實(shí)例中運(yùn)行;
[0087]步驟A4,ActivityThread 通過 Binder 進(jìn)程間通信機(jī)制將一個(gè) Applicat1nThread類型的 Binder 對(duì)象傳遞給 ActivityManagerService,以便以后 ActivityManagerService能夠通過這個(gè)Binder對(duì)象和它進(jìn)行通信;
[0088]步驟A5,ActivityManagerService通過Binder進(jìn)程間通信機(jī)制通知ActivityThread,現(xiàn)在一切準(zhǔn)備就緒,它可以真正執(zhí)行Activity的啟動(dòng)操作了。
[0089]以上介紹的步驟Al至步驟A5為應(yīng)用的啟動(dòng)過程,它實(shí)質(zhì)上是啟動(dòng)應(yīng)用在Manifest, xml中指定的一個(gè)主Activity或默認(rèn)Activity。上文步驟S102中監(jiān)聽?wèi)?yīng)用的啟動(dòng)事件,即可以監(jiān)聽?wèi)?yīng)用在步驟Al至步驟A5的啟動(dòng)過程的事件,例如,可以監(jiān)聽Launcher通過Binder進(jìn)程間通信機(jī)制通知ActivityManagerService,它要啟動(dòng)一個(gè)Activity時(shí),是否發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件。又如,可以監(jiān)聽?wèi)?yīng)用在ActivityThread中執(zhí)行Activity的啟動(dòng)時(shí),是否發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件,等等,本發(fā)明不限于此。
[0090]Android系統(tǒng)提供了一個(gè)Service類,可以實(shí)現(xiàn)一個(gè)以Service為基類的服務(wù)子類,在里面實(shí)現(xiàn)自己的計(jì)算型邏輯,然后在主進(jìn)程通過startService函數(shù)或者bindService函數(shù)來啟動(dòng)這個(gè)服務(wù)。在本發(fā)明實(shí)施例中,步驟S104中當(dāng)監(jiān)聽到應(yīng)用發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件時(shí)截取調(diào)起事件,這里,應(yīng)用可以通過以下方式發(fā)出調(diào)起其他應(yīng)用的調(diào)起事件,例如,應(yīng)用調(diào)用startService函數(shù),啟動(dòng)用于調(diào)起其他應(yīng)用的服務(wù);又如,應(yīng)用調(diào)用bindService函數(shù),啟動(dòng)用于調(diào)起其他應(yīng)用的服務(wù)。
[0091]進(jìn)一步,在主進(jìn)程調(diào)用startService函數(shù)或者bindService函數(shù)時(shí),可以通過Binder進(jìn)程間通信機(jī)制來通知ActivitManagerService來創(chuàng)建新進(jìn)程,并且啟動(dòng)指定的服務(wù),即調(diào)起其他應(yīng)用的服務(wù)。
[0092]以主進(jìn)程調(diào)用startService函數(shù)為例,它可以通過三次Binder進(jìn)程間通信完成服務(wù)的調(diào)起啟動(dòng)過程。首先,從主進(jìn)程調(diào)用到ActivityManagerService進(jìn)程中,完成新進(jìn)程的創(chuàng)建;其次,從新進(jìn)程調(diào)用到ActivityManagerService進(jìn)程中,獲取要在新進(jìn)程啟動(dòng)的服務(wù)(即調(diào)起其他應(yīng)用的服務(wù))的相關(guān)信息;接著,從ActivityManagerService進(jìn)程又回到新進(jìn)程中,最終將服務(wù)啟動(dòng)起來。
[0093]隨著安卓版本的升級(jí),系統(tǒng)安全度進(jìn)一步提升,root權(quán)限(root可以使得用戶獲取Android操作系統(tǒng)的超級(jí)用戶權(quán)限,其具有操作系統(tǒng)中所有的權(quán)限,如啟動(dòng)或停止一個(gè)進(jìn)程,刪除或增加用戶,增加或者禁用硬件等等)獲取也更加困難。因而,本發(fā)明實(shí)施例提供了權(quán)限更高的系統(tǒng)平臺(tái)簽名的解決方案,在提升操作權(quán)限方面具有更好的作用。平臺(tái)簽名,是Android終端的生產(chǎn)廠商在提供系統(tǒng)時(shí)以最高權(quán)限的簽名,一般為操作系統(tǒng)內(nèi)部使用,用戶無法查看。本發(fā)明實(shí)施例提供的技術(shù)方案,可以獲取應(yīng)用所在操作系統(tǒng)的平臺(tái)簽名,進(jìn)而基于平臺(tái)簽名獲取操作系統(tǒng)相應(yīng)的權(quán)限(這里,相應(yīng)的權(quán)限是指截取調(diào)起事件的權(quán)限),截取調(diào)起事件。
[0094]進(jìn)一步,可以運(yùn)行預(yù)先在應(yīng)用所在操作系統(tǒng)的SystemServer組件中注入的可執(zhí)行文件,獲取平臺(tái)簽名。或者,可以通過刷入recovery分區(qū),通過分區(qū)的一些程序獲取高權(quán)限,具體可以為在ramdisk中設(shè)置一個(gè)模塊,用于掃描操作系統(tǒng)分區(qū),掃描后查看操作系統(tǒng)的平臺(tái)簽名,利用查看到的操作系統(tǒng)的平臺(tái)簽名對(duì)其他程序重新簽名,以獲取操作系統(tǒng)相應(yīng)的權(quán)限。
[0095]上文步驟S106中提及的查詢結(jié)果可以是其他應(yīng)用為禁止調(diào)起的應(yīng)用,或者是其他應(yīng)用不為禁止調(diào)起的應(yīng)用。針對(duì)步驟S106,本發(fā)明實(shí)施例提供了一種可選的方案,在該方案中,獲取本地或云端服務(wù)器預(yù)先存儲(chǔ)的第一應(yīng)用調(diào)起黑名單,其中,該第一應(yīng)用調(diào)起黑名單中列出了禁止調(diào)起的應(yīng)用的標(biāo)識(shí)