應(yīng)用隱藏控制方法及裝置制造方法
【專利摘要】本發(fā)明涉及智能設(shè)備的安全控制技術(shù),公開(kāi)一種應(yīng)用隱藏控制方法,包括以下步驟:確定待隱藏的目標(biāo)應(yīng)用;發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息;截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。進(jìn)一步,可為本發(fā)明附加如下步驟:確定待顯示的已隱藏目標(biāo)應(yīng)用;發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,以在啟動(dòng)器中顯示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。本發(fā)明能夠在啟動(dòng)器中隱藏應(yīng)用程序,且不影響應(yīng)用程序的后續(xù)正常運(yùn)行。本發(fā)明不僅可以應(yīng)用于Android操作系統(tǒng)中,還可以用于具有類似架構(gòu)和機(jī)制的操作系統(tǒng)環(huán)境中。
【專利說(shuō)明】應(yīng)用隱藏控制方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及智能設(shè)備的安全控制技術(shù),尤其涉及一種應(yīng)用隱藏控制方法及裝置。
【背景技術(shù)】
[0002]以Android平臺(tái)為例,移動(dòng)終端設(shè)備通過(guò)啟動(dòng)器(Launcher)來(lái)提供用戶界面來(lái)實(shí)現(xiàn)與用戶之間的人機(jī)交互,啟動(dòng)器提供一桌面,在桌面上可以展示已安裝的應(yīng)用程序的圖標(biāo)。通過(guò)點(diǎn)擊這些圖標(biāo),便可以啟動(dòng)相應(yīng)的應(yīng)用程序。出于隱私保護(hù)的需要,用戶有時(shí)不想某些應(yīng)用程序被未經(jīng)授權(quán)者發(fā)現(xiàn)或運(yùn)行,以保護(hù)其個(gè)人隱私。現(xiàn)有技術(shù)中,普遍采用兩種方式加以保護(hù):
[0003]第一種方式是通過(guò)為程序加設(shè)程序鎖來(lái)實(shí)現(xiàn),當(dāng)使用者點(diǎn)擊相關(guān)圖標(biāo)時(shí),會(huì)首先運(yùn)行一驗(yàn)證程序,僅當(dāng)通過(guò)密碼校驗(yàn)之后,才加載運(yùn)行真正的目標(biāo)應(yīng)用。
[0004]第二種方式請(qǐng)參閱2014年5月14日公開(kāi)的CN103793657A號(hào)專利公告所揭示的用于在移動(dòng)終端上隱藏應(yīng)用的系統(tǒng)和方法,在該方法中,其揭示:隱藏單元通過(guò)禁用隱藏應(yīng)用的啟動(dòng)組件,使得不在移動(dòng)終端的桌面上顯示隱藏應(yīng)用的圖標(biāo)。
[0005]以上兩種方式均存在不足:
[0006]第一種方式雖然增加了驗(yàn)證環(huán)節(jié),但顯然會(huì)造成此地?zé)o銀的效果,吸引他人注意,不能達(dá)到徹底隱藏應(yīng)用的目的,且也因?yàn)樾r?yàn)環(huán)節(jié)導(dǎo)致用戶體驗(yàn)較差。
[0007]第二種方式則會(huì)導(dǎo)致被隱藏的應(yīng)用無(wú)法正常啟動(dòng),其后臺(tái)應(yīng)用也無(wú)法正常運(yùn)行,需要通過(guò)所謂的寄生應(yīng)用在運(yùn)行后對(duì)其實(shí)施加載,甚至需要依賴于特定的條件才能正常啟動(dòng)。
[0008]由此可見(jiàn),如何在不影響應(yīng)用正常使用的情況下實(shí)現(xiàn)應(yīng)用程序在啟動(dòng)器中的隱藏,是業(yè)內(nèi)一直無(wú)法克服的難題。
【發(fā)明內(nèi)容】
[0009]本發(fā)明的目的在于實(shí)現(xiàn)應(yīng)用程序在啟動(dòng)器中的隱藏控制,而提供一種應(yīng)用隱藏控制方法和裝置。
[0010]為實(shí)現(xiàn)本發(fā)明的目的,本發(fā)明采取如下技術(shù)方案:
[0011]本發(fā)明提供的一種應(yīng)用隱藏控制方法,包括以下步驟:
[0012]確定待隱藏的目標(biāo)應(yīng)用;
[0013]發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息;
[0014]截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0015]此外,為便于用戶按需回顯已隱藏目標(biāo)應(yīng)用,該方法還包括如下步驟:
[0016]確定待顯示的已隱藏目標(biāo)應(yīng)用;
[0017]發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,以在啟動(dòng)器中顯示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0018]進(jìn)一步,所述確定待隱藏的目標(biāo)應(yīng)用的步驟,具體包括如下子步驟:
[0019]基于Root權(quán)限向系統(tǒng)注冊(cè)基于系統(tǒng)底層通信機(jī)制的服務(wù)進(jìn)程;
[0020]基于Root權(quán)限啟動(dòng)用戶進(jìn)程,用戶進(jìn)程綁定與服務(wù)進(jìn)程的通信;
[0021]服務(wù)進(jìn)程通過(guò)用戶進(jìn)程獲取已安裝應(yīng)用的包名及其對(duì)應(yīng)的隱藏狀態(tài)設(shè)置信息,以依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所述待隱藏的目標(biāo)應(yīng)用或確定待顯示的已隱藏目標(biāo)應(yīng)用。由此,不僅可在開(kāi)機(jī)時(shí)快速實(shí)施本方法,而且可以借助系統(tǒng)底層通信機(jī)制實(shí)現(xiàn)有效的隱藏控制效果。
[0022]較佳的,本方法各步驟先于啟動(dòng)器進(jìn)程的啟動(dòng)而執(zhí)行,或者,先于啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令的調(diào)用而執(zhí)行,由此避免被先啟動(dòng)的啟動(dòng)器先行顯示待隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo),而獲得徹底隱藏目標(biāo)應(yīng)用的效果。
[0023]具體的,所述廣播消息由所述服務(wù)進(jìn)程進(jìn)行發(fā)送。
[0024]可選地,所述截獲訪問(wèn)指令并返回空值的步驟,由所述的服務(wù)進(jìn)程或者能與所述服務(wù)進(jìn)程通信的獨(dú)立進(jìn)程執(zhí)行。
[0025]較佳的,所述確定目標(biāo)應(yīng)用的步驟,通過(guò)所述用戶進(jìn)程提供用戶界面,用于獲取已安裝應(yīng)用的包名并顯示已安裝應(yīng)用列表,以接收用戶針對(duì)其中的已安裝應(yīng)用輸入的隱藏狀態(tài)設(shè)置信息,以供服務(wù)進(jìn)程依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所需的目標(biāo)應(yīng)用。
[0026]具體的,所述已安裝應(yīng)用包括系統(tǒng)應(yīng)用和/或第三方應(yīng)用。
[0027]較佳的,所述確定待隱藏的目標(biāo)應(yīng)用的步驟,以及所述確定待顯示的已隱藏目標(biāo)應(yīng)用的步驟,合并于同一活動(dòng)組件,通過(guò)調(diào)用該活動(dòng)組件而實(shí)現(xiàn)。
[0028]具體的,通過(guò)確定目標(biāo)應(yīng)用的包名而確定所需的目標(biāo)應(yīng)用,該包名被包含在所述廣播消息中進(jìn)行發(fā)送。
[0029]具體的,所述截獲訪問(wèn)指令并返回空值的步驟,采用鉤子函數(shù)掛鉤所述訪問(wèn)指令的方式實(shí)現(xiàn)。
[0030]較佳的,所述對(duì)目標(biāo)應(yīng)用的訪問(wèn)指令,包括querylntentActivities、getPackagelnfo兩個(gè)函數(shù)中任意一個(gè)或多個(gè)。
[0031]本發(fā)明提供的一種應(yīng)用隱藏控制裝置,包括:
[0032]確定單元,用于確定待隱藏的目標(biāo)應(yīng)用;
[0033]廣播單元,用于發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息;
[0034]監(jiān)控單元,用于截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0035]進(jìn)一步,該裝置中:
[0036]所述確定單元還用于確定待顯示的已隱藏目標(biāo)應(yīng)用;
[0037]所述廣播單元還用于發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,以在啟動(dòng)器中顯示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0038]所述確定單元具體包括:
[0039]注冊(cè)模塊,被配置為基于Root權(quán)限向系統(tǒng)注冊(cè)基于系統(tǒng)底層通信機(jī)制的服務(wù)進(jìn)程;
[0040]啟動(dòng)模塊,被配置為基于Root權(quán)限啟動(dòng)用戶進(jìn)程,使用戶進(jìn)程綁定與服務(wù)進(jìn)程的通信;
[0041]所述服務(wù)進(jìn)程通過(guò)用戶進(jìn)程獲取已安裝應(yīng)用的包名及其對(duì)應(yīng)的隱藏狀態(tài)設(shè)置信息,以依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所述待隱藏的目標(biāo)應(yīng)用或確定待顯示的已隱藏目標(biāo)應(yīng)用。
[0042]可選的,所述廣播單元與監(jiān)控單元合并為同一功能模塊。
[0043]進(jìn)一步,所述確定單元中:
[0044]所述用戶進(jìn)程提供用戶界面,用于獲取已安裝應(yīng)用的包名并顯示已安裝應(yīng)用列表,以接收用戶針對(duì)其中的已安裝應(yīng)用輸入的隱藏狀態(tài)設(shè)置信息;
[0045]所述服務(wù)進(jìn)程依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所需的目標(biāo)應(yīng)用。
[0046]較佳的,所述已安裝應(yīng)用包括系統(tǒng)應(yīng)用和/或第三方應(yīng)用。
[0047]較佳的,所述確定單元實(shí)現(xiàn)于同一活動(dòng)組件。
[0048]進(jìn)一步,所述確定單元通過(guò)確定目標(biāo)應(yīng)用的包名而確定所需的目標(biāo)應(yīng)用,所述廣播消息包含有目標(biāo)應(yīng)用的包名。
[0049]相較于現(xiàn)有技術(shù),本發(fā)明至少具有如下優(yōu)點(diǎn):
[0050]1、本發(fā)明能獲得安全的隱藏效果:本發(fā)明利用了啟動(dòng)器自身的功能特點(diǎn),針對(duì)待隱藏的目標(biāo)應(yīng)用,向啟動(dòng)器發(fā)送該目標(biāo)應(yīng)用已刪除的廣播消息,通過(guò)技術(shù)欺騙的手段,使啟動(dòng)器產(chǎn)生目標(biāo)應(yīng)用已經(jīng)刪除的錯(cuò)覺(jué),從而將該目標(biāo)應(yīng)用的快捷方式圖標(biāo)從啟動(dòng)器中刪除而不再顯示,實(shí)現(xiàn)了應(yīng)用程序快捷方式圖標(biāo)在啟動(dòng)器中的初步隱藏。進(jìn)而,為了避免啟動(dòng)器因通過(guò)自身固有的功能而調(diào)用訪問(wèn)指令獲取應(yīng)用程序列表進(jìn)而在桌面重新顯示已經(jīng)初步隱藏的圖標(biāo),本發(fā)明還通過(guò)截獲這類訪問(wèn)指令,使其重定向并向其返回空值,進(jìn)一步進(jìn)行技術(shù)欺騙,杜絕啟動(dòng)器重新顯示所述待隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo)的可能,使目標(biāo)應(yīng)用一經(jīng)隱藏,除非人為修改,否則便不能再由啟動(dòng)器掃描發(fā)現(xiàn)而顯示相應(yīng)的圖標(biāo),導(dǎo)致目標(biāo)應(yīng)用重新暴露于桌面。由此可見(jiàn),本發(fā)明實(shí)現(xiàn)了目標(biāo)應(yīng)用在啟動(dòng)器中的徹底隱藏效果。
[0051]2、本發(fā)明能獲得徹底的隱藏效果:由于啟動(dòng)器往往先于其它應(yīng)用程序啟動(dòng),在其啟動(dòng)過(guò)程中,將自行掃描系統(tǒng)應(yīng)用和用戶應(yīng)用,掃描后即將這些應(yīng)用的快捷方式圖標(biāo)予以顯示,因此,本發(fā)明進(jìn)一步通過(guò)為自身配置為底層進(jìn)程和將自身配置為在開(kāi)機(jī)時(shí)先于啟動(dòng)器啟動(dòng),啟動(dòng)速度非常迅速,因而能搶占系統(tǒng)主動(dòng)權(quán),進(jìn)而可以先于啟動(dòng)器為各個(gè)待隱藏的目標(biāo)應(yīng)用發(fā)送用于欺騙啟動(dòng)器的廣播消息,從而確保啟動(dòng)器自其被加載時(shí)起,即無(wú)法顯示所述待隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo),避免在開(kāi)機(jī)時(shí)啟動(dòng)器進(jìn)行不當(dāng)?shù)幕仫@,實(shí)現(xiàn)了整個(gè)操作系統(tǒng)運(yùn)行周期中,除非人為修改設(shè)置,均能確保所述目標(biāo)應(yīng)用不至于被啟動(dòng)器暴露,顯然這種隱藏效果更為徹底。
[0052]3、本發(fā)明不影響被隱藏的目標(biāo)應(yīng)用的正常使用:本發(fā)明雖然借助了 Hook技術(shù),但無(wú)需改變目標(biāo)應(yīng)用和啟動(dòng)器自身的任何內(nèi)容,更無(wú)需通過(guò)寄生應(yīng)用來(lái)實(shí)現(xiàn)對(duì)該目標(biāo)應(yīng)用的調(diào)用,只需在需要使用該目標(biāo)應(yīng)用時(shí),改變?cè)撃繕?biāo)應(yīng)用的隱藏狀態(tài)設(shè)置信息,而該隱藏狀態(tài)設(shè)置信息顯然只有隱藏和顯示兩種狀態(tài),用戶一旦將該目標(biāo)應(yīng)用從隱藏狀態(tài)改變?yōu)轱@示狀態(tài),本發(fā)明便可依據(jù)這一改變發(fā)送該目標(biāo)應(yīng)用已添加的廣播消息,啟動(dòng)器即能捕獲這一廣播消息,進(jìn)而觸發(fā)啟動(dòng)器重新順利地獲取和更新桌面上的應(yīng)用程序快捷方式圖標(biāo),使之前已被隱藏的目標(biāo)應(yīng)用的快捷方式圖標(biāo)再度顯示在桌面上。
[0053]由以上的分析可知,本發(fā)明能夠徹底、安全、可靠地實(shí)現(xiàn)應(yīng)用程序在啟動(dòng)器中的隱藏效果。
[0054]本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
【專利附圖】
【附圖說(shuō)明】
[0055]本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對(duì)實(shí)施例的描述中將變得明顯和容易理解,其中:
[0056]圖1是本發(fā)明的應(yīng)用隱藏控制方法的流程原理圖,主要示出其用于實(shí)現(xiàn)圖標(biāo)隱藏的控制流程;
[0057]圖2是本發(fā)明的應(yīng)用隱藏控制方法中步驟Sll和步驟SlT可共用的更為具體的流程原理圖;
[0058]圖3是本發(fā)明的應(yīng)用隱藏控制方法的流程原理圖,主要示出其用于實(shí)現(xiàn)圖標(biāo)回顯的控制流程;
[0059]圖4是本發(fā)明的應(yīng)用隱藏控制裝置的原理框圖,該框圖一并示例出該裝置與啟動(dòng)器之間的連接關(guān)系,其中以虛線表示省略了廣播單元與啟動(dòng)器之間的系統(tǒng)廣播機(jī)制的表達(dá)。
【具體實(shí)施方式】
[0060]下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過(guò)參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對(duì)本發(fā)明的限制。
[0061]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書(shū)中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無(wú)線連接或無(wú)線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
[0062]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。
[0063]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,這里所使用的“終端”、“終端設(shè)備”既包括無(wú)線信號(hào)接收器的設(shè)備,其僅具備無(wú)發(fā)射能力的無(wú)線信號(hào)接收器的設(shè)備,又包括接收和發(fā)射硬件的設(shè)備,其具有能夠在雙向通信鏈路上,執(zhí)行雙向通信的接收和發(fā)射硬件的設(shè)備。這種設(shè)備可以包括:蜂窩或其他通信設(shè)備,其具有單線路顯示器或多線路顯示器或沒(méi)有多線路顯示器的蜂窩或其他通信設(shè)備;PCS (Personal Communicat1ns Service,個(gè)人通信系統(tǒng)),其可以組合語(yǔ)音、數(shù)據(jù)處理、傳真和/或數(shù)據(jù)通信能力;PDA (Personal Digital Assistant,個(gè)人數(shù)字助理),其可以包括射頻接收器、尋呼機(jī)、互聯(lián)網(wǎng)/內(nèi)聯(lián)網(wǎng)訪問(wèn)、網(wǎng)絡(luò)瀏覽器、記事本、日歷和/或GPS (Global Posit1ning System,全球定位系統(tǒng))接收器;常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備,其具有和/或包括射頻接收器的常規(guī)膝上型和/或掌上型計(jì)算機(jī)或其他設(shè)備。這里所使用的“終端”、“終端設(shè)備”可以是便攜式、可運(yùn)輸、安裝在交通工具(航空、海運(yùn)和/或陸地)中的,或者適合于和/或配置為在本地運(yùn)行,和/或以分布形式,運(yùn)行在地球和/或空間的任何其他位置運(yùn)行。這里所使用的“終端”、“終端設(shè)備”還可以是通信終端、上網(wǎng)終端、音樂(lè)/視頻播放終端,例如可以是PDA、MID(Mobile Internet Device,移動(dòng)互聯(lián)網(wǎng)設(shè)備)和/或具有音樂(lè)/視頻播放功能的移動(dòng)電話,也可以是智能電視、機(jī)頂盒等設(shè)備。
[0064]本【技術(shù)領(lǐng)域】技術(shù)人員可以理解,這里所使用的服務(wù)器、云端、遠(yuǎn)端網(wǎng)絡(luò)設(shè)備等概念,具有等同效果,其包括但不限于計(jì)算機(jī)、網(wǎng)絡(luò)主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或多個(gè)服務(wù)器構(gòu)成的云。在此,云由基于云計(jì)算(Cloud Computing)的大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)超級(jí)虛擬計(jì)算機(jī)。本發(fā)明的實(shí)施例中,遠(yuǎn)端網(wǎng)絡(luò)設(shè)備、終端設(shè)備與WNS服務(wù)器之間可通過(guò)任何通信方式實(shí)現(xiàn)通信,包括但不限于,基于3GPP、LTE、WIMAX的移動(dòng)通信、基于TCP/IP、UDP協(xié)議的計(jì)算機(jī)網(wǎng)絡(luò)通信以及基于藍(lán)牙、紅外傳輸標(biāo)準(zhǔn)的近距無(wú)線傳輸方式。
[0065]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明所稱的“應(yīng)用”、“應(yīng)用程序”、“應(yīng)用軟件”以及類似表述的概念,是業(yè)內(nèi)技術(shù)人員所公知的相同概念,是指由一系列計(jì)算機(jī)指令及相關(guān)數(shù)據(jù)資源有機(jī)構(gòu)造的適于電子運(yùn)行的計(jì)算機(jī)軟件。除非特別指定,這種命名本身不受編程語(yǔ)言種類、級(jí)別,也不受其賴以運(yùn)行的操作系統(tǒng)或平臺(tái)所限制。理所當(dāng)然地,此類概念也不受任何形式的終端所限制。
[0066]本發(fā)明以下即將描述的一種應(yīng)用隱藏控制方法和裝置所實(shí)施的應(yīng)用場(chǎng)景,是安裝在移動(dòng)終端上的基于Android操作系統(tǒng)的運(yùn)行環(huán)境。
[0067]為了說(shuō)明本發(fā)明的實(shí)施,本發(fā)明試圖結(jié)合計(jì)算機(jī)程序的靜態(tài)和動(dòng)態(tài)兩個(gè)方面進(jìn)行描述,所謂靜態(tài)方面,是指程序安裝包、文件、數(shù)據(jù)庫(kù)等存儲(chǔ)于媒介的存儲(chǔ)對(duì)象;所謂動(dòng)態(tài)方面,是指被調(diào)入內(nèi)存中執(zhí)行的動(dòng)態(tài)對(duì)象,包括但不局限于進(jìn)程、線程、所用到的數(shù)據(jù)等。鑒于計(jì)算機(jī)軟件技術(shù)的這些特點(diǎn),不應(yīng)將本發(fā)明所述及的各個(gè)方法、步驟、子步驟、裝置、單元、模塊等,孤立地理解為僅靜態(tài)或僅動(dòng)態(tài)的方面,本領(lǐng)域技術(shù)人員對(duì)此應(yīng)當(dāng)知曉。故而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)能夠依據(jù)本發(fā)明有關(guān)靜態(tài)的表述而將其對(duì)應(yīng)到動(dòng)態(tài)的進(jìn)程活動(dòng),或者依據(jù)本發(fā)明有關(guān)動(dòng)態(tài)的進(jìn)程活動(dòng)對(duì)應(yīng)到其靜態(tài)的表現(xiàn)形式,建立起靜態(tài)與動(dòng)態(tài)兩方面的必然性關(guān)聯(lián),以此為基礎(chǔ)來(lái)理解本發(fā)明。
[0068]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)可以預(yù)見(jiàn),由于本發(fā)明所揭示的技術(shù)涉及到對(duì)Android系統(tǒng)級(jí)別資源的調(diào)用,因而,在實(shí)施本發(fā)明前需要為以本發(fā)明實(shí)例化的應(yīng)用程序的運(yùn)行獲取Root權(quán)限,但獲取Root權(quán)限本身屬于現(xiàn)有且公知的先決技術(shù),現(xiàn)實(shí)中移動(dòng)終端用戶已經(jīng)具備自行獲取Root權(quán)限的操作能力和自覺(jué)意識(shí)。此外,部分開(kāi)明的移動(dòng)終端在其機(jī)器出廠時(shí)已經(jīng)為用戶開(kāi)放了系統(tǒng)的Root權(quán)限,或者故意為獲取Root權(quán)限提供了便利手段。因此,不應(yīng)將其視為影響本發(fā)明實(shí)施的必要構(gòu)件。
[0069]基于上述的先導(dǎo)性的說(shuō)明,可以知曉,本發(fā)明所要揭示的應(yīng)用隱藏控制方法及其相應(yīng)的裝置,是實(shí)現(xiàn)本發(fā)明的相對(duì)應(yīng)的兩個(gè)方面,并非相互孤立的兩個(gè)方案。
[0070]本發(fā)明的實(shí)施,從其運(yùn)行的視角,需要注意兩個(gè)層次,其一是先于啟動(dòng)器加載運(yùn)行的視角,其二是在啟動(dòng)器加載后運(yùn)行的視角,這兩個(gè)視角代表了本發(fā)明解決技術(shù)問(wèn)題的不同深度。兩個(gè)層次中,前者雖然使后者取得更佳的效果,但后者并不必然依賴于前者,而取得其應(yīng)有的獨(dú)立性,換言之,后者可以獨(dú)立解決本發(fā)明要解決的主要技術(shù)問(wèn)題。后文的描述中,出于流暢和簡(jiǎn)明的考慮,即使未必周密詳述這兩個(gè)層次的細(xì)節(jié)聯(lián)系,由于本領(lǐng)域技術(shù)人員掌握了本領(lǐng)域普通技術(shù)知識(shí),因而,本領(lǐng)域技術(shù)人員根據(jù)此處的先導(dǎo)說(shuō)明也應(yīng)當(dāng)足以完全理解后文所揭示的技術(shù)內(nèi)容。
[0071]本發(fā)明的應(yīng)用隱藏控制方法,從技術(shù)原理上,采用了類似技術(shù)欺騙的手段,通過(guò)欺騙啟動(dòng)器進(jìn)程而實(shí)現(xiàn)目標(biāo)應(yīng)用的快捷方式圖標(biāo)的隱藏和顯示控制。通過(guò)分析Android啟動(dòng)器(Launcher)的代碼便可知曉其運(yùn)行機(jī)理。Android系統(tǒng)的Home應(yīng)用程序Launcher是由ActivityManagerService 啟動(dòng)的,而 ActivityManagerService 和 PackageManagerService一樣,都是在開(kāi)機(jī)時(shí)由SystemServer組件啟動(dòng)的,SystemServer組件首先是啟動(dòng)PackageManagerService,由它來(lái)負(fù)責(zé)安裝系統(tǒng)的應(yīng)用程序,系統(tǒng)中的應(yīng)用程序安裝好了以后,SystemServer組件接下來(lái)就要通過(guò)ActivityManagerService來(lái)啟動(dòng)Home應(yīng)用程序Launcher 了,Launcher在啟動(dòng)的時(shí)候便會(huì)通過(guò)PackageManagerService把系統(tǒng)中已經(jīng)安裝好的應(yīng)用程序以快捷方式圖標(biāo)的形式展示在桌面上。將圖標(biāo)展示到桌面的過(guò)程,會(huì)調(diào)用querylntentActivities 和 getPackagelnfo 兩個(gè)函數(shù),querylntentActivities 用于獲取所有注冊(cè)了 act1n.MAIN和act1n.Launcher的活動(dòng)組件(Activity)的應(yīng)用程序,進(jìn)一步通過(guò)getPackagelnfo可以獲得包括應(yīng)用程序包名在內(nèi)的相關(guān)應(yīng)用程序參數(shù)。這兩個(gè)參數(shù)如果得到有效數(shù)據(jù),便能夠?qū)D標(biāo)展示到桌面上。除此之外,在整個(gè)啟動(dòng)器的進(jìn)程生命周期中,當(dāng)其接收到android, intent, act1n.PACKAGE_REMOVED (表不某一指定包名的應(yīng)用已經(jīng)被刪除)或android, intent, act1n.PACKAGE_ADDED (表示某一指定包名的應(yīng)用已經(jīng)被添加)廣播消息之后,也會(huì)調(diào)用上述兩個(gè)函數(shù)以期展示已安裝的目標(biāo)應(yīng)用。因此,通過(guò)給啟動(dòng)器發(fā)送上述已刪除的廣播消息,便可讓啟動(dòng)器以為廣播消息中所包含的指定包名的已經(jīng)被刪除,進(jìn)一步啟動(dòng)器調(diào)用querylntentActivities和getPackagelnfo兩個(gè)函數(shù)企圖進(jìn)行桌面展示內(nèi)容更新時(shí),本發(fā)明又將截獲該兩個(gè)函數(shù),針對(duì)該目標(biāo)應(yīng)用向該兩個(gè)函數(shù)返回表征應(yīng)用已經(jīng)不存在的空值,由此讓啟動(dòng)器徹底誤信所述目標(biāo)應(yīng)用不存在,而不再在桌面上展示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)(如果圖標(biāo)之前已經(jīng)存在,將被啟動(dòng)器刪除)。而在用戶需要正常使用該目標(biāo)應(yīng)用,不再隱藏該目標(biāo)應(yīng)用時(shí),本發(fā)明可發(fā)送android, intent, act1n.PACKAGE_ADDED廣播消息給啟動(dòng)器,除此之外不再對(duì)啟動(dòng)器的運(yùn)行過(guò)程施加任何干涉,啟動(dòng)器由此便可以調(diào)用querylntentActivities和getPackagelnfo兩個(gè)函數(shù)獲得該目標(biāo)應(yīng)用的特征信息,將其快捷方式圖標(biāo)正常顯示到桌面上。
[0072]本發(fā)明的應(yīng)用隱藏控制方法,請(qǐng)參閱圖1,基于上述的技術(shù)原理分析,通過(guò)如下步驟來(lái)加以實(shí)施:
[0073]步驟S11、確定待隱藏的目標(biāo)應(yīng)用。
[0074]確定待隱藏的目標(biāo)應(yīng)用,需要結(jié)合前文中關(guān)于本發(fā)明的兩個(gè)層次的考慮,也即啟動(dòng)器成功加載之前的開(kāi)機(jī)啟動(dòng)階段的考慮,和啟動(dòng)器已運(yùn)行情況下的考慮。前者與后者的最大的特征區(qū)別在于,在啟動(dòng)器成功加載之前,需要構(gòu)造實(shí)施本發(fā)明的運(yùn)行環(huán)境,使得以本發(fā)明所構(gòu)造的進(jìn)程能夠先于啟動(dòng)器被加載而優(yōu)先搶占系統(tǒng)底層控制權(quán),以便在啟動(dòng)器未調(diào)用訪問(wèn)指令時(shí)便已經(jīng)由本發(fā)明實(shí)施了目標(biāo)應(yīng)用隱藏;而后者因啟動(dòng)器已經(jīng)啟動(dòng),便可不必再考慮啟動(dòng)器加載先后的問(wèn)題。事實(shí)上,在本發(fā)明所揭示的實(shí)施例中,這兩個(gè)層次的結(jié)合為同一實(shí)施例進(jìn)行描述的。
[0075]具體而言,確定待隱藏的目標(biāo)應(yīng)用的步驟,其目的是為了獲取用戶期望隱藏的目標(biāo)應(yīng)用的具體對(duì)象,獲得該目標(biāo)應(yīng)用的包名,作為后續(xù)發(fā)送廣播消息的參數(shù)。請(qǐng)參閱圖2,該步驟通過(guò)以下的細(xì)分步驟實(shí)現(xiàn):
[0076]步驟S111、基于Root權(quán)限向系統(tǒng)注冊(cè)基于系統(tǒng)底層通信機(jī)制的服務(wù)進(jìn)程。
[0077]本實(shí)施例所稱的服務(wù)進(jìn)程,是指在系統(tǒng)開(kāi)機(jī)時(shí),由諸如su.apk之類的植入模塊獲取Root權(quán)限之后,通過(guò)執(zhí)行shell命令向系統(tǒng)注冊(cè)一個(gè)可以利用底層通信機(jī)制進(jìn)行通信的通信服務(wù)進(jìn)程。該服務(wù)進(jìn)程基于Android系統(tǒng)所提供的Binder機(jī)制,向System Manager注冊(cè),例如可通過(guò)系統(tǒng)調(diào)用函數(shù)ServiceManager.addService來(lái)實(shí)現(xiàn)插入操作,通過(guò)Android提供的固有的Binder機(jī)制,在通信服務(wù)進(jìn)程與其監(jiān)聽(tīng)的外部用戶進(jìn)程之間建立C/S架構(gòu)的溝通管道。所述通信服務(wù)進(jìn)程通過(guò)上述的配置,已經(jīng)成為系統(tǒng)級(jí)別的服務(wù)進(jìn)程級(jí)別,其權(quán)限顯然高于其他外部用戶進(jìn)程甚至,因此該通信服務(wù)進(jìn)程可以作為通信基礎(chǔ),為其他調(diào)用它的進(jìn)程提供系統(tǒng)底層通信保障,完成系統(tǒng)與其他調(diào)用它的進(jìn)程之間的通信連接。
[0078]步驟S112、基于Root權(quán)限啟動(dòng)用戶進(jìn)程,用戶進(jìn)程綁定與服務(wù)進(jìn)程的通信。
[0079]進(jìn)一步,為了配合所述通信進(jìn)程,在系統(tǒng)的前端安裝一應(yīng)用程序,在系統(tǒng)開(kāi)機(jī)時(shí),即可啟動(dòng)該應(yīng)用程序,該應(yīng)用程序啟動(dòng)后便構(gòu)造出用戶進(jìn)程,該用戶進(jìn)程利用Binder機(jī)制,建立其與所述通信服務(wù)進(jìn)程之間的C/S溝通機(jī)制。由于這種溝通機(jī)制是較為底層的,并且已經(jīng)獲得Root權(quán)限,因此,用戶進(jìn)程能夠通過(guò)與所述通信服務(wù)進(jìn)程的通信,來(lái)由所述通信服務(wù)進(jìn)程直接或間接執(zhí)行較為底層的操作功能。需要指出的是,所述用戶進(jìn)程既可以由所述通信服務(wù)進(jìn)程來(lái)啟動(dòng),也可以由例如前述的su.apk包的進(jìn)程來(lái)啟動(dòng),無(wú)論是誰(shuí)啟動(dòng)該用戶進(jìn)程,均是以獲得Root權(quán)限為基礎(chǔ)而實(shí)現(xiàn)的。
[0080]步驟S113、服務(wù)進(jìn)程通過(guò)用戶進(jìn)程獲取數(shù)據(jù)。
[0081]安排在前一步驟啟動(dòng)用戶進(jìn)程的目的,在于確保所述服務(wù)進(jìn)程能夠在開(kāi)機(jī)時(shí)先于啟動(dòng)器獲取由所述用戶進(jìn)程獲取并生成的用戶設(shè)置數(shù)據(jù),特別是指其中涉及已安裝應(yīng)用的隱藏狀態(tài)設(shè)置信息以及相應(yīng)的包名等數(shù)據(jù),以便服務(wù)進(jìn)程可以據(jù)此確定待隱藏目標(biāo)應(yīng)用。
[0082]通過(guò)上述各步驟,可以確定待隱藏的目標(biāo)應(yīng)用,這一過(guò)程的描述是基于一次開(kāi)機(jī)過(guò)程進(jìn)行的。然而,本領(lǐng)域技術(shù)人員結(jié)合前述有關(guān)兩個(gè)層次的描述可以知曉,在另外的實(shí)施例中,可以不考慮上述通信服務(wù)進(jìn)程是否先于啟動(dòng)器的加載而啟動(dòng),只是從啟動(dòng)器已經(jīng)完成啟動(dòng)的視角來(lái)考慮所述用戶進(jìn)程的活動(dòng)。
[0083]對(duì)于一次開(kāi)機(jī)過(guò)程而言,所述用戶設(shè)置數(shù)據(jù)是已經(jīng)由所述用戶進(jìn)程采集存儲(chǔ)在本地的數(shù)據(jù)。開(kāi)機(jī)過(guò)程中,啟動(dòng)器成功加載之前,用戶進(jìn)程的前端活動(dòng)組件(Activity)未能顯示,因?yàn)檫@一過(guò)程中不能通過(guò)用戶進(jìn)程來(lái)采集數(shù)據(jù),只能通過(guò)用戶進(jìn)程獲取之前運(yùn)行時(shí)已經(jīng)采集生成的數(shù)據(jù)。而在啟動(dòng)器加載完成后,也即用戶進(jìn)程在其能正常顯示用戶界面時(shí),會(huì)通過(guò)一活動(dòng)組件提供一用戶界面,在用戶界面提供一已安裝應(yīng)用列表,用戶選中某個(gè)已安裝應(yīng)用時(shí),被系統(tǒng)視為將該已安裝應(yīng)用標(biāo)記為待隱藏狀態(tài);當(dāng)用戶去除其選中狀態(tài)時(shí),則被系統(tǒng)視為將該已安裝應(yīng)用標(biāo)記為待顯示狀態(tài)。借助該用戶界面,可以通過(guò)多種公知方式來(lái)實(shí)現(xiàn)用戶界面內(nèi)容布局設(shè)計(jì)和用戶數(shù)據(jù)采集方式設(shè)計(jì),恕不贅述。
[0084]這里所稱的已安裝應(yīng)用,既包括系統(tǒng)自帶的應(yīng)用,其安裝包存儲(chǔ)于system/app目錄中,也包括用戶自裝的第三方應(yīng)用,其安裝包存儲(chǔ)于data/app目錄中。不管何種類型,用戶進(jìn)程均可以獲取與該應(yīng)用有關(guān)的信息,尤其是其中的包名。例如,通過(guò)querylntentActivities 函數(shù)來(lái)獲取注冊(cè)有 act1n.MAIN 和 act1n.LANUCHER 的活動(dòng)組件(意味著此一活動(dòng)組件的快捷方式圖標(biāo)將被顯示到桌面上)的安裝包,繼而通過(guò)getPackagelnfo來(lái)獲取這些安裝包的包名、版本號(hào)之類的信息等,由此便在理論上獲取了所有能被桌面顯示圖標(biāo)的已安裝應(yīng)用。
[0085]用戶進(jìn)程的活動(dòng)組件將其提供的活動(dòng)過(guò)程中采集的用戶設(shè)置信息,建立存儲(chǔ)表格,例如,可以為該表格建立從已安裝應(yīng)用的包名到用戶選定的隱藏狀態(tài)設(shè)置信息之間的映射關(guān)系,從而將該活動(dòng)過(guò)程中采集的已安裝應(yīng)用包名及其相應(yīng)的隱藏狀態(tài)標(biāo)記對(duì)應(yīng)存儲(chǔ)到該表格中。存儲(chǔ)表格的設(shè)計(jì)方案也可以采用其它變例,例如,僅將需要隱藏的目標(biāo)應(yīng)用列入該存儲(chǔ)表格,不需要隱藏的目標(biāo)應(yīng)用則從該表格中去除,由此,目標(biāo)應(yīng)用的隱藏狀態(tài)設(shè)置信息即由該存儲(chǔ)表格中包名的有無(wú)所代替。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)能靈活設(shè)計(jì)此一存儲(chǔ)表格,恕不贅述。
[0086]由此,所述服務(wù)進(jìn)程,無(wú)論是在啟動(dòng)器被加載之前的系統(tǒng)開(kāi)機(jī)過(guò)程中,還是在啟動(dòng)器被成功加載之后,均可通過(guò)與該用戶進(jìn)程通信,來(lái)通過(guò)該用戶進(jìn)程獲取該表格中的用戶設(shè)置信息,也即確定所述待隱藏的目標(biāo)應(yīng)用,以及待顯示的已隱藏目標(biāo)應(yīng)用。服務(wù)進(jìn)程最終確定其所需的目標(biāo)應(yīng)用的依據(jù),是所述數(shù)據(jù)表中的包名與其相應(yīng)的隱藏狀態(tài)設(shè)置信息,當(dāng)隱藏狀態(tài)設(shè)置信息表征為待隱藏時(shí),則將這些相應(yīng)的目標(biāo)應(yīng)用視為待隱藏目標(biāo)應(yīng)用做后續(xù)處理;反之,當(dāng)隱藏狀態(tài)設(shè)置信息表征為待顯示(非隱藏)時(shí),則將這些相應(yīng)的目標(biāo)應(yīng)用視為待顯示的已隱藏目標(biāo)應(yīng)用做后續(xù)處理。
[0087]需要特別強(qiáng)調(diào)的是,此處已經(jīng)揭示,通過(guò)所述用戶進(jìn)程的所述活動(dòng)組件所提供的用戶界面,既可用于確定待隱藏的目標(biāo)應(yīng)用,也可用于確定待顯示的已隱藏目標(biāo)應(yīng)用,因此,可以知曉,步驟Slll至步驟S113既適用于確定待隱藏的目標(biāo)應(yīng)用,也適用于確定待顯示的已隱藏目標(biāo)應(yīng)用,換言之,本發(fā)明確定所需的目標(biāo)應(yīng)用,無(wú)論是待隱藏的目標(biāo)應(yīng)用,還是待顯示的已隱藏目標(biāo)應(yīng)用,均在本質(zhì)上由相同的進(jìn)程實(shí)現(xiàn)。實(shí)現(xiàn)確定待隱藏的目標(biāo)應(yīng)用的步驟,以及后續(xù)實(shí)現(xiàn)確定待顯示的已隱藏目標(biāo)應(yīng)用的步驟,在本質(zhì)上是同組進(jìn)程活動(dòng)的兩個(gè)方面,其不同僅表現(xiàn)在所述存儲(chǔ)表格的數(shù)據(jù)表達(dá)上。
[0088]可以看出,通過(guò)前述步驟Slll至S113的實(shí)施,本發(fā)明的關(guān)鍵進(jìn)程,主要是指其中的服務(wù)進(jìn)程和所述用于提供已采集的用戶設(shè)置信息的用戶進(jìn)程,已經(jīng)先于所述啟動(dòng)器的加載而進(jìn)駐。在對(duì)現(xiàn)有市面上大量移動(dòng)終端進(jìn)行測(cè)試之后的數(shù)據(jù)顯示,本發(fā)明的上述關(guān)鍵進(jìn)程的啟動(dòng)速度,相對(duì)于啟動(dòng)器的加載而快,至少提前10 - 30秒的時(shí)間,因此,本發(fā)明的關(guān)鍵進(jìn)程顯然能優(yōu)先于啟動(dòng)器而搶占系統(tǒng)的控制主動(dòng)權(quán)。在這種情況下,在一次開(kāi)機(jī)過(guò)程中,實(shí)施本發(fā)明后續(xù)的步驟,可以使得啟動(dòng)器不能通過(guò)相關(guān)函數(shù)顯示本應(yīng)被隱藏的目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0089]在確定了待隱藏的目標(biāo)應(yīng)用之后,即可通過(guò)本發(fā)明的服務(wù)進(jìn)程以及在必要時(shí)通過(guò)其他獨(dú)立進(jìn)程與所述用戶進(jìn)程相配合,來(lái)完成本發(fā)明的后續(xù)步驟。
[0090]步驟S12、發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息。
[0091]在前一步驟中通過(guò)確定待隱藏的目標(biāo)應(yīng)用而獲取的一個(gè)或多個(gè)目標(biāo)應(yīng)用的包名,將在本步驟中進(jìn)一步利用。具體而言,按照前述對(duì)啟動(dòng)器進(jìn)行技術(shù)欺騙的原理分析,本步驟通過(guò)所述用于通信的服務(wù)進(jìn)程,針對(duì)所述待隱藏目標(biāo)應(yīng)用,向系統(tǒng)發(fā)送表征該目標(biāo)應(yīng)用已經(jīng)被刪除的廣播消息,形式如:
[0092]sendPackageBroadcast(Intent.ACT10N_PACKAGE_REM0VED, removedPackageName,extras, null, null, removedUsers)
[0093]可以看出,發(fā)送該廣播消息時(shí),包含了該目標(biāo)應(yīng)用的包名removedPackageName,根據(jù)前述揭示的啟動(dòng)器的固有機(jī)制原理,在啟動(dòng)器收到該廣播消息后,通過(guò)getDataStrings函數(shù)獲得廣播消息中的包名,會(huì)認(rèn)為包名為removedPackageName的目標(biāo)應(yīng)用已經(jīng)被刪除,于是后續(xù)將該目標(biāo)應(yīng)用的快捷方式圖標(biāo)從啟動(dòng)器桌面中刪除。多個(gè)目標(biāo)應(yīng)用均可以這種技術(shù)欺騙方式去操作。
[0094]但是,如前所述,啟動(dòng)器固有的機(jī)制中,將通過(guò)調(diào)用querylntentActivities和getPackagelnfo兩個(gè)函數(shù)去實(shí)現(xiàn)桌面內(nèi)容的更新,因此,這兩個(gè)函數(shù)會(huì)再度發(fā)現(xiàn)所述的目標(biāo)應(yīng)用,從而使用戶使僅以前述發(fā)送廣播消息的步驟不能實(shí)現(xiàn)目標(biāo)應(yīng)用隱藏的目的。這種情況下,需要后一步驟S13輔以完善。
[0095]步驟S13、截獲啟動(dòng)器對(duì)目標(biāo)應(yīng)用的訪問(wèn)指令,返回空值。
[0096]如前所述,由于啟動(dòng)器固有的機(jī)制的原因,將利用querylntentActivities和getPackagelnfo兩個(gè)訪問(wèn)指令更新桌面內(nèi)容,導(dǎo)致僅以前一步驟不足以實(shí)現(xiàn)目標(biāo)應(yīng)用的隱藏,因此而提供本步驟。
[0097]由此也可以看出,先前關(guān)于本發(fā)明的兩個(gè)層次的關(guān)系的描述,可以在這里得到更為清楚的了解。具體而言,啟動(dòng)器在啟動(dòng)時(shí),會(huì)自行通過(guò)上述兩函數(shù)來(lái)更新其桌面圖標(biāo),那么,如果未能在該兩個(gè)函數(shù)的進(jìn)程運(yùn)行入口點(diǎn)之前便取得完成本發(fā)明有關(guān)進(jìn)程的啟動(dòng),不能搶占啟動(dòng)器的控制權(quán),那么,便不能截獲該兩個(gè)函數(shù)的執(zhí)行,即使后續(xù)啟動(dòng)器加載完成后仍可以截獲該兩個(gè)函數(shù),但實(shí)際上啟動(dòng)器也仍然會(huì)閃現(xiàn)待隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo),直至其下次受本發(fā)明控制而更新桌面內(nèi)容為止。因此,前述所稱本發(fā)明各步驟先于啟動(dòng)器進(jìn)程的啟動(dòng)而執(zhí)行,也可理解為先于所述啟動(dòng)器的所述訪問(wèn)指令的調(diào)用而執(zhí)行,這種時(shí)序上的追求,盡管可以通過(guò)后續(xù)步驟S13的執(zhí)行進(jìn)程來(lái)實(shí)現(xiàn),但考慮到Android固有的開(kāi)機(jī)機(jī)制,一般情況下,不必另外結(jié)合其它技術(shù)手段,按照前述的進(jìn)程加載過(guò)程,依然可以達(dá)到先于所述訪問(wèn)指令被調(diào)用而優(yōu)先完成本發(fā)明的進(jìn)程的加載的目的,從而也便能確保本發(fā)明各步驟的優(yōu)先執(zhí)行。對(duì)本發(fā)明前述所稱兩個(gè)層次的理解,至此應(yīng)較為完整和系統(tǒng)。不處理啟動(dòng)器與本發(fā)明的進(jìn)程所實(shí)施的步驟之間的先后關(guān)系,依靠本發(fā)明的三個(gè)步驟所執(zhí)行的基本動(dòng)作,依然可以實(shí)現(xiàn)圖標(biāo)隱藏功能,但處理了這一先后關(guān)系,則可使圖標(biāo)隱藏效果更為徹底。
[0098]本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,盡管前一步驟為了取得效率上的優(yōu)勢(shì)而由本發(fā)明的通信服務(wù)進(jìn)程實(shí)施,但是,各步驟由何一進(jìn)程、由多少進(jìn)程具體實(shí)施,理論上可由本領(lǐng)域技術(shù)人員實(shí)現(xiàn),不應(yīng)以實(shí)施某步驟的進(jìn)程的不同而誤解本發(fā)明的實(shí)現(xiàn)。同理,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)知曉,本步驟的實(shí)施,既可由所述服務(wù)進(jìn)程執(zhí)行,也可以由能與該服務(wù)進(jìn)程通信的獨(dú)立監(jiān)控進(jìn)程執(zhí)行??紤]到截獲訪問(wèn)指令的操作,僅對(duì)隱藏目標(biāo)應(yīng)用實(shí)施,而不需針對(duì)顯示已隱藏目標(biāo)應(yīng)用實(shí)施,因此,也可優(yōu)先考慮利用一與所述服務(wù)進(jìn)程通信的獨(dú)立進(jìn)程來(lái)實(shí)現(xiàn)。但是,后續(xù)為說(shuō)明的簡(jiǎn)便,統(tǒng)一將之理解為由服務(wù)進(jìn)程來(lái)實(shí)現(xiàn)本步驟。
[0099]有鑒于此,本發(fā)明的服務(wù)進(jìn)程,借助公知的Hook技術(shù),采用鉤子函數(shù)掛鉤并劫持所述啟動(dòng)器進(jìn)程中的querylntentActivities和getPackagelnfo兩個(gè)函數(shù)。當(dāng)服務(wù)進(jìn)程監(jiān)聽(tīng)到啟動(dòng)器進(jìn)程的入口點(diǎn)到達(dá)上述兩個(gè)函數(shù)時(shí),即重定向?yàn)閳?zhí)行相應(yīng)的鉤子函數(shù)。在鉤子函數(shù)內(nèi)部,實(shí)現(xiàn)所述兩個(gè)函數(shù)的正常功能之外,與所述待隱藏目標(biāo)應(yīng)用相應(yīng)的訪問(wèn)結(jié)果將被返回空值,然后返回啟動(dòng)器進(jìn)程繼續(xù)執(zhí)行該兩個(gè)函數(shù)的后續(xù)指令。此舉對(duì)于啟動(dòng)器而言,整個(gè)進(jìn)程的執(zhí)行過(guò)程非常流暢,并不知曉自身被劫持,因而,啟動(dòng)器仍然能夠獲得穩(wěn)定的運(yùn)行效果。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明所稱的空值,應(yīng)當(dāng)理解為包括常量null、0在內(nèi)的一切可以被啟動(dòng)器理解為不存在所述目標(biāo)應(yīng)用的任何表達(dá)方式,而不應(yīng)僅僅理解為所述null,O之類的固有表達(dá)內(nèi)容。
[0100]通過(guò)上述鉤子函數(shù)的處理,啟動(dòng)器進(jìn)程所實(shí)施的任何涉及上述兩個(gè)訪問(wèn)指令的調(diào)用,相對(duì)于所述目標(biāo)應(yīng)用而言,啟動(dòng)器的調(diào)用結(jié)果必然無(wú)功而返。因此,啟動(dòng)器進(jìn)程最終獲得的桌面待顯示應(yīng)用列表中,不包括所述的待隱藏目標(biāo)應(yīng)用,其桌面上不再顯示該些目標(biāo)應(yīng)用的圖標(biāo)。對(duì)終端使用者而言,由于在桌面上查找不到該目標(biāo)應(yīng)用,無(wú)法據(jù)以啟動(dòng),由此便起到了隱藏應(yīng)用程序的效果,對(duì)個(gè)人隱私進(jìn)行了很好的保護(hù)。
[0101]通過(guò)以上步驟Sll、S12、S13的結(jié)合,可以很好地實(shí)現(xiàn)對(duì)選定目標(biāo)應(yīng)用的隱藏效果,其快捷方式圖標(biāo)不會(huì)啟動(dòng)器桌面上顯示。但是,用戶通常并非為了永久性地隱藏該應(yīng)用,通常期望在需要時(shí)重新顯示已隱藏的目標(biāo)應(yīng)用。因此,本發(fā)明進(jìn)而結(jié)合圖3提供如下步驟實(shí)現(xiàn)這種控制目的:
[0102]步驟S11’、確定待顯示的已隱藏目標(biāo)應(yīng)用。
[0103]請(qǐng)回顧前述步驟Sll所揭示的內(nèi)容。本發(fā)明通過(guò)位于系統(tǒng)應(yīng)用層的所述用戶進(jìn)程來(lái)提供用戶界面,在用戶界面上顯示已安裝應(yīng)用列表,來(lái)獲取用戶是否隱藏或顯示已安裝應(yīng)用的數(shù)據(jù)。該用戶界面如前所述可以由同一活動(dòng)組件實(shí)現(xiàn),因此,該活動(dòng)組件在實(shí)質(zhì)上提供了針對(duì)某個(gè)目標(biāo)應(yīng)用的可視化狀態(tài)進(jìn)行切換控制的功能。如前所述,用戶如果需要去除對(duì)某個(gè)已隱藏目標(biāo)應(yīng)用的隱藏設(shè)置,可以去除對(duì)該目標(biāo)應(yīng)用的選定,由此,所述存儲(chǔ)表格中,相應(yīng)的目標(biāo)應(yīng)用的包名便會(huì)被賦以可供顯示的標(biāo)記,也就是改變其相應(yīng)的隱藏狀態(tài)設(shè)置信息。因此,可以知曉,本步驟對(duì)于本發(fā)明所構(gòu)造的進(jìn)程而言,是可以理解為與所述確定待隱藏目標(biāo)應(yīng)用的步驟為同一綜合步驟的不同方面的。
[0104]S12’、發(fā)送表征已隱藏目標(biāo)應(yīng)用已添加的廣播消息。
[0105]前一步驟Sll’與所述步驟Sll為一體兩面,在其中已經(jīng)確定了待顯示的已隱藏目標(biāo)應(yīng)用,在這個(gè)基礎(chǔ)上,本步驟需要進(jìn)一步解決的問(wèn)題,是如何使得已隱藏目標(biāo)應(yīng)用去除其隱藏狀態(tài)。為了實(shí)現(xiàn)這一效果,在前一步驟中通過(guò)確定待顯示的已隱藏目標(biāo)應(yīng)用而獲取的一個(gè)或多個(gè)目標(biāo)應(yīng)用的包名,將在本步驟中進(jìn)一步利用。具體而言,按照前述對(duì)啟動(dòng)器進(jìn)行技術(shù)欺騙的原理分析,本步驟通過(guò)所述用于通信的服務(wù)進(jìn)程,針對(duì)所述待顯示的已隱藏目標(biāo)應(yīng)用,向系統(tǒng)發(fā)送表征該目標(biāo)應(yīng)用已經(jīng)被添加的廣播消息,形式如:
[0106]sendPackageBroadcast(Intent.ACT1N_PACKAGE_ADDED, addedPackageName, extras, null, null, addedUsers)
[0107]可以看出,發(fā)送該廣播消息時(shí),包含了該目標(biāo)應(yīng)用的包名addedPackageName。根據(jù)前述揭示的啟動(dòng)器的固有機(jī)制原理,在啟動(dòng)器收到該廣播消息后,通過(guò)getDataStrings函數(shù)獲得廣播消息中的包名,會(huì)認(rèn)為包名為addedPackageName的目標(biāo)應(yīng)用已經(jīng)被安裝,于是后續(xù)便將該目標(biāo)應(yīng)用的快捷方式圖標(biāo)回顯到啟動(dòng)器桌面中。同理,多個(gè)目標(biāo)應(yīng)用均可以這種技術(shù)欺騙方式去操作。
[0108]繼而,如前所述,啟動(dòng)器固有的機(jī)制揭示,啟動(dòng)器將通過(guò)調(diào)用querylntentActivities和getPackagelnfo兩個(gè)函數(shù)去實(shí)現(xiàn)桌面內(nèi)容的更新。不同于前述的需求,實(shí)現(xiàn)已隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo)的回顯,并不需要Hook技術(shù)的參與,而完全依賴于啟動(dòng)器自身的固有執(zhí)行過(guò)程即可。即使步驟S13所述的鉤子函數(shù)再度截獲該兩個(gè)訪問(wèn)指令,因?yàn)殂^子函數(shù)的依據(jù)是用戶進(jìn)程提供的用戶設(shè)置信息(存儲(chǔ)表格),而用戶設(shè)置信息中已經(jīng)改變了該原本已隱藏的目標(biāo)應(yīng)用的狀態(tài)為可顯示,因此,鉤子函數(shù)也不會(huì)阻止前述兩個(gè)訪問(wèn)指令對(duì)所述已顯示且曾隱藏的目標(biāo)應(yīng)用的訪問(wèn),從而確保啟動(dòng)器無(wú)障礙地回顯所述待顯示且曾隱藏的目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
[0109]結(jié)合以上的分析,本領(lǐng)域技術(shù)人員可以理解,在程序設(shè)計(jì)階段,本發(fā)明只需通過(guò)分支語(yǔ)句,即可使本發(fā)明隱藏、顯示目標(biāo)應(yīng)用的兩方面的功能在同一個(gè)程序及其相應(yīng)的進(jìn)程中實(shí)現(xiàn)。
[0110]上文詳細(xì)揭示了本發(fā)明的應(yīng)用隱藏控制方法的具體實(shí)例,本領(lǐng)域技術(shù)人員自然知曉,依照該方法可以提供本發(fā)明的一種應(yīng)用隱藏控制裝置,該裝置以模塊化和基于過(guò)程的思維來(lái)實(shí)現(xiàn),與該方法之間存在對(duì)應(yīng)關(guān)系,且能達(dá)到相同的技術(shù)效果。因此,以下即將進(jìn)行的針對(duì)該裝置的描述,也將沿用前述方法的概念及原理進(jìn)行說(shuō)明。
[0111]請(qǐng)參閱圖4,本發(fā)明的應(yīng)用隱藏控制裝置主要包括確定單元11、廣播單元12以及監(jiān)控單元13。所述的確定單元11,用于可選擇性地執(zhí)行步驟Sll和步驟S11’,以對(duì)應(yīng)確定待隱藏的目標(biāo)應(yīng)用和待顯示的已隱藏目標(biāo)應(yīng)用;所述的廣播單元12,用于可選擇性地執(zhí)行步驟S12和S12’,以對(duì)應(yīng)發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息和發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,發(fā)送已添加的廣播消息能使啟動(dòng)器回顯所述已隱藏目標(biāo)應(yīng)用的快捷方式圖標(biāo);所述的監(jiān)控單元13,用于執(zhí)行步驟S13,截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器2中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。此處所稱的可選擇性地執(zhí)行,不是二選一,而是結(jié)合前文關(guān)于方法的詳細(xì)揭示,指基于具體目標(biāo)應(yīng)用是否需要隱藏而對(duì)應(yīng)適應(yīng)不同步驟。通過(guò)結(jié)合本發(fā)明的應(yīng)用隱藏控制方法的說(shuō)明,相信本領(lǐng)域技術(shù)人員對(duì)此完全可以理解。
[0112]相應(yīng)的,所述確定單元11具體包括:
[0113]注冊(cè)模塊,用于執(zhí)行所述步驟SI 11,被配置為基于Root權(quán)限向系統(tǒng)注冊(cè)基于系統(tǒng)底層通信機(jī)制的服務(wù)進(jìn)程;
[0114]啟動(dòng)模塊,用于執(zhí)行所述步驟S112,被配置為基于Root權(quán)限啟動(dòng)用戶進(jìn)程,使用戶進(jìn)程綁定與服務(wù)進(jìn)程的通信;
[0115]根據(jù)步驟S113的邏輯,所述服務(wù)進(jìn)程通過(guò)用戶進(jìn)程獲取已安裝應(yīng)用的包名及其對(duì)應(yīng)的隱藏狀態(tài)設(shè)置信息,以依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所述待隱藏的目標(biāo)應(yīng)用或確定待顯示的已隱藏目標(biāo)應(yīng)用。
[0116]為便于程序?qū)崿F(xiàn)考慮,所述廣播單元12與監(jiān)控單元13可以合并為同一功能模塊,以使兩部分功能體現(xiàn)到同一所述通信服務(wù)進(jìn)程中。當(dāng)然,所述監(jiān)控單元13也可為獨(dú)立進(jìn)程,以區(qū)別并獨(dú)立于所述的通信服務(wù)進(jìn)程。同理,所述注冊(cè)模塊與所述啟動(dòng)模塊也可實(shí)現(xiàn)為同一功能模塊,例如,可以借助所述su.apk實(shí)現(xiàn)。
[0117]所述確定單元11中,所述用戶進(jìn)程提供用戶界面,用于獲取已安裝應(yīng)用的包名并顯示已安裝應(yīng)用列表,以接收用戶針對(duì)其中的已安裝應(yīng)用輸入的隱藏狀態(tài)設(shè)置信息;所述服務(wù)進(jìn)程依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所需的目標(biāo)應(yīng)用。同理,所述已安裝應(yīng)用包括系統(tǒng)應(yīng)用和/或第三方應(yīng)用。為便于通過(guò)同一活動(dòng)組件同時(shí)獲取待顯示目標(biāo)應(yīng)用和待隱藏目標(biāo)應(yīng)用,所述確定單元11表現(xiàn)在程序?qū)崿F(xiàn)中,可實(shí)現(xiàn)于同一活動(dòng)組件。進(jìn)一步,根據(jù)前述方法所揭示,所述確定單元11通過(guò)確定目標(biāo)應(yīng)用的包名而確定所需的目標(biāo)應(yīng)用,所述廣播消息包含有目標(biāo)應(yīng)用的包名。
[0118]以上簡(jiǎn)略地給出與本發(fā)明的應(yīng)用隱藏控制方法相對(duì)應(yīng)的應(yīng)用隱藏控制裝置,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,該方法所實(shí)現(xiàn)的所有活動(dòng),均對(duì)應(yīng)性地適用于該裝置的各個(gè)相應(yīng)功能模塊中,因此,本發(fā)明的裝置無(wú)疑是本發(fā)明的方法的模塊化實(shí)現(xiàn)方案,兩者是同一技術(shù)方案的不同角度的實(shí)現(xiàn)。
[0119]綜上所述,本發(fā)明能夠在啟動(dòng)器中徹底隱藏應(yīng)用程序,且不影響應(yīng)用程序的后續(xù)正常運(yùn)行。本發(fā)明不僅可以應(yīng)用于Android操作系統(tǒng)中,還可以用于具有類似架構(gòu)和機(jī)制的操作系統(tǒng)環(huán)境中。
[0120]以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種應(yīng)用隱藏控制方法,其特征在于,包括以下步驟: 確定待隱藏的目標(biāo)應(yīng)用; 發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息; 截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
2.根據(jù)權(quán)利要求1所述的應(yīng)用隱藏控制方法,其特征在于,該方法還包括如下步驟: 確定待顯示的已隱藏目標(biāo)應(yīng)用; 發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,以在啟動(dòng)器中顯示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
3.根據(jù)權(quán)利要求1或2所述的應(yīng)用隱藏控制方法,其特征在于,所述確定待隱藏的目標(biāo)應(yīng)用的步驟,具體包括如下子步驟: 基于Root權(quán)限向系統(tǒng)注冊(cè)基于系統(tǒng)底層通信機(jī)制的服務(wù)進(jìn)程; 基于Root權(quán)限啟動(dòng)用戶進(jìn)程,用戶進(jìn)程綁定與服務(wù)進(jìn)程的通信; 服務(wù)進(jìn)程通過(guò)用戶進(jìn)程獲取已安裝應(yīng)用的包名及其對(duì)應(yīng)的隱藏狀態(tài)設(shè)置信息,以依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所述待隱藏的目標(biāo)應(yīng)用或確定待顯示的已隱藏目標(biāo)應(yīng)用。
4.根據(jù)權(quán)利要求3所述的應(yīng)用隱藏控制方法,其特征在于,所述確定目標(biāo)應(yīng)用的步驟,通過(guò)所述用戶進(jìn)程提供用戶界面,用于獲取已安裝應(yīng)用的包名并顯示已安裝應(yīng)用列表,以接收用戶針對(duì)其中的已安裝應(yīng)用輸入的隱藏狀態(tài)設(shè)置信息,以供服務(wù)進(jìn)程依據(jù)所述隱藏狀態(tài)設(shè)置信息確定所需的目標(biāo)應(yīng)用。
5.根據(jù)權(quán)利要求2所述的應(yīng)用隱藏控制方法,其特征在于,所述確定待隱藏的目標(biāo)應(yīng)用的步驟,以及所述確定待顯示的已隱藏目標(biāo)應(yīng)用的步驟,合并于同一活動(dòng)組件,通過(guò)調(diào)用該活動(dòng)組件而實(shí)現(xiàn)。
6.根據(jù)權(quán)利要求1或2所述的應(yīng)用隱藏控制方法,其特征在于,通過(guò)確定目標(biāo)應(yīng)用的包名而確定所需的目標(biāo)應(yīng)用,該包名被包含在所述廣播消息中進(jìn)行發(fā)送。
7.根據(jù)權(quán)利要求1所述應(yīng)用隱藏控制方法,其特征在于,所述截獲訪問(wèn)指令并返回空值的步驟,采用鉤子函數(shù)掛鉤所述訪問(wèn)指令的方式實(shí)現(xiàn)。
8.根據(jù)權(quán)利要求7所述的應(yīng)用隱藏控制方法,其特征在于,所述對(duì)目標(biāo)應(yīng)用的訪問(wèn)指令,包括querylntentActivities、getPackagelnfo兩個(gè)函數(shù)中任意一個(gè)或多個(gè)。
9.一種應(yīng)用隱藏控制裝置,其特征在于,包括: 確定單元,用于確定待隱藏的目標(biāo)應(yīng)用; 廣播單元,用于發(fā)送表征所述目標(biāo)應(yīng)用已刪除的廣播消息; 監(jiān)控單元,用于截獲啟動(dòng)器進(jìn)程對(duì)所述目標(biāo)應(yīng)用的訪問(wèn)指令,針對(duì)所述目標(biāo)應(yīng)用對(duì)應(yīng)向啟動(dòng)器進(jìn)程返回空值,以在啟動(dòng)器中隱藏該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
10.根據(jù)權(quán)利要求9所述的應(yīng)用隱藏控制裝置,其特征在于,該裝置中: 所述確定單元還用于確定待顯示的已隱藏目標(biāo)應(yīng)用; 所述廣播單元還用于發(fā)送表征所述已隱藏目標(biāo)應(yīng)用已添加的廣播消息,以在啟動(dòng)器中顯示該目標(biāo)應(yīng)用的快捷方式圖標(biāo)。
【文檔編號(hào)】G06F21/60GK104376268SQ201410692304
【公開(kāi)日】2015年2月25日 申請(qǐng)日期:2014年11月26日 優(yōu)先權(quán)日:2014年11月26日
【發(fā)明者】楊威, 曹陽(yáng), 竇文科, 符傳堅(jiān), 藏春暉 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司