本發(fā)明涉及電子技術領域,尤其涉及一種在隱藏應用的桌面圖標的方法及裝置。
背景技術:
以Android平臺為例,移動終端設備通過啟動器(Launcher)來提供用戶界面來實現(xiàn)與用戶之間的人機交互,啟動器提供一桌面,在桌面上可以展示已安裝的應用程序的圖標。通過點擊這些圖標,便可以啟動相應的應用程序。出于隱私保護的需要,用戶有時不想某些應用程序被未經(jīng)授權者發(fā)現(xiàn)或運行,以保護其個人隱私。現(xiàn)有技術中,普遍采用以下兩種方式加以保護:
第一種方式是通過為程序加設程序鎖來實現(xiàn),當使用者點擊相關圖標時,會首先運行一驗證程序,僅當通過密碼校驗之后,才加載運行真正的應用。
第二種方式包括:隱藏單元通過禁用隱藏應用的啟動組件,使得不在移動終端的桌面上顯示隱藏應用的圖標。
以上兩種方式均存在不足:第一種方式雖然增加了驗證環(huán)節(jié),但顯然會造成此地無銀的效果,吸引他人注意,不能達到徹底隱藏應用的目的,且也因為校驗環(huán)節(jié)導致用戶體驗較差。
第二種方式則會導致被隱藏的應用無法正常啟動,其后臺應用也無法正常運行,需要通過所謂的寄生應用在運行后對其實施加載,甚至需要依賴于特定的條件才能正常啟動。
由此可見,如何在不影響應用正常使用的情況下實現(xiàn)應用程序在啟動器中的隱藏,是業(yè)內(nèi)一直無法克服的難題。
因此,現(xiàn)有技術中存在隱藏應用的桌面圖標時會導致應用無法正常運行的 技術問題。
技術實現(xiàn)要素:
本發(fā)明實施例通過提供一種隱藏應用的桌面圖標的方法及裝置,用以解決現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
本發(fā)明實施例第一方面提供了一種隱藏應用的桌面圖標的方法,所述方法包括:
通過用戶進程獲取待隱藏應用的設置信息;
根據(jù)所述設置信息,通過所述用戶進程向桌面發(fā)送刪除所述待隱藏應用的廣播消息;
通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,將所述廣播消息的權限提升為所述超級用戶權限;
根據(jù)權限提升后的所述廣播消息,在所述桌面上刪除所述待隱藏應用的桌面圖標。
可選地,在所述將所述廣播消息的權項提升為所述超級用戶權限之后,所述方法還包括:
在啟動器進程訪問所述待隱藏應用時,向所述啟動器進程返回空值,以在所述啟動器進程對應的啟動器中刪除所述桌面圖標。
可選地,所述在啟動器進程訪問所述待隱藏應用時,向所述啟動器進程返回空值,具體包括:
通過鉤子函數(shù)監(jiān)測所述啟動器進程;
在所述鉤子函數(shù)監(jiān)測到所述啟動器進程發(fā)出想所述待隱藏應用的訪問指令時,截獲所述訪問指令,并向所述啟動器進程返回空值。
可選地,所述截獲所述訪問指令,具體包括:
截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù)。
可選地,通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,具體包括:
通過鉤子函數(shù)監(jiān)測所述用戶進程;
在所述鉤子函數(shù)監(jiān)測到所述用戶進程發(fā)送所述廣播消息時,將所述廣播消息發(fā)送給所述服務進程;
通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼。
可選地,在所述通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼之前,所述方法還包括:
通過所述服務進程對所述廣播消息的啟動者編碼進行驗證;
在通過所述服務進程確定所述廣播消息的啟動者編碼為所述用戶進程對應的編碼時,執(zhí)行步驟:通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼。
可選地,所述通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼,具體包括:
通過所述服務進程將所述廣播消息的啟動者的編碼更改為1000。
8、一種隱藏應用的桌面圖標的裝置,其特征在于,所述裝置包括:
獲取單元,用于通過用戶進程獲取待隱藏應用的設置信息;
發(fā)送單元,用于根據(jù)所述設置信息,通過所述用戶進程發(fā)送刪除所述待隱藏應用的廣播消息;
提權單元,通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,將所述廣播消息的權限提升為所述超級用戶權限;
刪除單元,根據(jù)權限提升后的所述廣播消息,在桌面上刪除所述待隱藏應用的桌面圖標。
可選地,在所述將所述廣播消息的權項提升為所述超級用戶權限之后,所述裝置還包括:
空值返回單元,用于在啟動器進程訪問所述待隱藏應用時,向所述啟動器進程返回空值,以在所述啟動器進程對應的啟動器中刪除所述桌面圖標。
可選地,所述空值返回單元具體用于通過鉤子函數(shù)監(jiān)測所述啟動器進程,并在所述鉤子函數(shù)監(jiān)測到所述啟動器進程發(fā)出想所述待隱藏應用的訪問指令時,截獲所述訪問指令,并向所述啟動器進程返回空值。
可選地,所述空值返回單元具體用于截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù)。
可選地,所述提權單元具體用于通過鉤子函數(shù)監(jiān)測所述用戶進程,并在所述鉤子函數(shù)監(jiān)測到所述用戶進程發(fā)送所述廣播消息時,將所述廣播消息發(fā)送給所述服務進程,并通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼。
可選地,所述裝置還包括驗證單元,所述驗證單元用于在所述通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼之前,通過所述服務進程對所述廣播消息的啟動者編碼進行驗證,并在通過所述服務進程確定所述廣播消息的啟動者編碼為所述用戶進程對應的編碼時,所述提權單元具體用于通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼。
可選地,所述驗證單元具體用于通過所述服務進程將所述廣播消息的啟動者的編碼更改為1000。
本發(fā)明實施例中提供的一個或多個技術方案,至少具有如下技術效果或優(yōu)點:
由于采用了根據(jù)待隱藏應用的設置信息,通過用戶進程向桌面發(fā)送刪除待隱藏應用的廣播消息,并通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限的技術方案,該廣播消息具有了超級用戶權限,所以能夠在桌面上刪除待隱藏應用的桌面圖標,實現(xiàn)了隱藏應用的桌面圖標的技術效果,同時由于本實施例提供的方法僅僅刪除了隱藏應 用的桌面圖標,所以不會對應用的正常運行如應用的正常啟動或后臺程序的啟動等等造成影響,從而解決了現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
附圖說明
圖1為本發(fā)明實施例提供的隱藏應用的桌面圖標的方法的流程圖;
圖2為本發(fā)明一實施例提供的隱藏應用的桌面圖標的方法的流程圖;
圖3為本發(fā)明實施例提供的隱藏應用的桌面圖標的裝置的示意圖。
具體實施方式
本發(fā)明實施例通過提供一種隱藏應用的桌面圖標的方法及裝置,用以解決現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
在接下來的實施例中,將以本發(fā)明實施例提供的方法應用于安卓系統(tǒng)為例,來進行詳細地舉例介紹,在其他實施例中,還可以應用于諾基亞公司提供的塞班系統(tǒng)或蘋果公司提供的蘋果系統(tǒng)中,在此不做限制。
實施例一
請參考圖1,圖1為本發(fā)明實施例提供的隱藏應用的桌面圖標的方法的流程圖,如圖1所示,該方法包括:
101:通過用戶進程獲取待隱藏應用的設置信息;
具體來講,可以在系統(tǒng)的前端安裝一應用程序,在系統(tǒng)開機時,即可啟動該應用程序,該應用程序啟動后便構造出用戶進程,該用戶進程的目的,在于確保服務進程能夠在開機時先于啟動器獲取由用戶進程獲取并生成的待隱藏應用的設置信息,特別是指其中涉及待隱藏應用的設置信息以及相應的包名等數(shù)據(jù)。
102:根據(jù)設置信息,通過用戶進程發(fā)送刪除待隱藏應用的廣播消息;
具體來講,根據(jù)設置信息,可以通過用戶進程利用Intent參數(shù),并通過調(diào)用sendBroadcast方法,在系統(tǒng)中發(fā)送廣播消息,該廣播消息具體可以是一個Binder消息。但是,由于該廣播消息的啟動者編碼(英文:UserIdentification;簡稱UID)為該用戶進程,所以系統(tǒng)的桌面顯示組件可能不會執(zhí)行該廣播消息,需要進一步地處理。
103:通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限;
具體來講,該服務進程可以是申請超級用戶(英文:SuperUser;簡稱:SU)權限后執(zhí)行相應的命令,將該服務進程注入到系統(tǒng)底層,使得該服務進程具有超級用戶權限。在本實施例中,通過該服務進程對廣播消息進行提權處理可以是將廣播消息的UID更改為1000,使得該廣播消息具有超級用戶權限。
104:根據(jù)權限提升后的廣播消息,在桌面上刪除待隱藏應用的桌面圖標。
在本實施例中,由于采用了根據(jù)待隱藏應用的設置信息,通過用戶進程向桌面發(fā)送刪除待隱藏應用的廣播消息,并通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限的技術方案,該廣播消息具有了超級用戶權限,所以能夠在桌面上刪除待隱藏應用的桌面圖標,實現(xiàn)了隱藏應用的桌面圖標的技術效果,同時由于本實施例提供的方法僅僅刪除了隱藏應用的桌面圖標,所以不會對應用的正常運行如應用的正常啟動或后臺程序的啟動等等造成影響,從而解決了現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
實施例二
實施例二為在實施例一的基礎上的細化,為實施例一提供的方法提供了詳細的應用場景。
請參考圖2,圖2為本發(fā)明實施例提供的隱藏應用的桌面圖標的方法的流程圖,如圖2所示,該方法包括:
201:通過用戶進程獲取待隱藏應用的設置信息;
本步驟與實施例中步驟101一致,在此不再贅述。
需要說明的是,對于一次開機過程而言,待隱藏應用的設置信息是已經(jīng)由用戶進程采集存儲在本地的數(shù)據(jù)。開機過程中,啟動器成功加載之前,用戶進程的前端活動組件(Activity)未能顯示,因為這一過程中不能通過用戶進程來采集數(shù)據(jù),只能通過用戶進程獲取上一次運行時已經(jīng)采集生成的數(shù)據(jù)。而在啟動器加載完成后,也即用戶進程在其能正常顯示用戶界面時,會通過一活動組件提供一用戶界面,在用戶界面提供一已安裝應用列表,用戶選中某個已安裝應用時,被系統(tǒng)視為將該已安裝應用標記為被隱藏狀態(tài);當用戶去除其選中狀態(tài)時,則被系統(tǒng)視為將該已安裝應用標記為被顯示狀態(tài)。借助該用戶界面,可以通過多種公知方式來實現(xiàn)用戶界面內(nèi)容布局設計和用戶數(shù)據(jù)采集方式設計,在此就不再贅述了。
這里所稱的已安裝應用,既包括系統(tǒng)自帶的應用,其安裝包存儲于system/app目錄中,也包括用戶自裝的第三方應用,其安裝包存儲于data/app目錄中。不管何種類型,用戶進程均可以獲取與該應用有關的信息,尤其是其中的包名。例如,通過queryIntentActivities函數(shù)來獲取注冊有action.MAIN和action.LANUCHER的活動組件(意味著此一活動組件的快捷方式圖標將被顯示到桌面上)的安裝包,繼而通過getPackageInfo來獲取這些安裝包的包名、版本號之類的信息等,由此便在理論上獲取了所有能被桌面顯示圖標的已安裝應用。
用戶進程的活動組件將其提供的活動過程中采集的用戶設置信息,建立存儲表格,例如,可以為該表格建立從已安裝應用的包名到用戶選定的隱藏狀態(tài)設置信息之間的映射關系,從而將該活動過程中采集的已安裝應用包名及其相應的隱藏狀態(tài)標記對應存儲到該表格中。存儲表格的設計方案也可以采用其它變例,例如,僅將需要隱藏的應用列入該存儲表格,不需要隱藏的應用則從該表格中去除,由此,應用的隱藏狀態(tài)設置信息即由該存儲表格中包名的有無所 代替。本領域技術人員應當能靈活設計此存儲表格,在此就不再贅述了。
由此,服務進程,無論是在啟動器被加載之前的系統(tǒng)開機過程中,還是在啟動器被成功加載之后,均可通過與該用戶進程通信,來通過該用戶進程獲取該表格中的用戶設置信息,也即確定待隱藏的應用,以及待顯示的已隱藏應用。服務進程最終確定其所需的應用的依據(jù),是數(shù)據(jù)表中的包名與其相應的隱藏狀態(tài)設置信息,當隱藏狀態(tài)設置信息表征為待隱藏時,則將這些相應的應用視為待隱藏應用做后續(xù)處理;反之,當隱藏狀態(tài)設置信息表征為待顯示(非隱藏)時,則將這些相應的應用視為待顯示的已隱藏應用做后續(xù)處理。
需要特別強調(diào)的是,此處已經(jīng)揭示,通過用戶進程的活動組件所提供的用戶界面,既可用于確定待隱藏的應用,也可用于確定待顯示的已隱藏應用,因此,可以知曉,本步驟既適用于確定待隱藏的應用,也適用于確定待顯示的已隱藏應用,換言之,本發(fā)明確定所需的應用,無論是待隱藏的應用,還是待顯示的已隱藏應用,均在本質(zhì)上由相同的進程實現(xiàn)。實現(xiàn)確定待隱藏的應用的步驟,以及后續(xù)實現(xiàn)確定待顯示的已隱藏應用的步驟,在本質(zhì)上是同組進程活動的兩個方面,其不同僅表現(xiàn)在存儲表格的數(shù)據(jù)表達上。
202:根據(jù)設置信息,通過用戶進程向桌面發(fā)送刪除待隱藏應用的廣播消息;
步驟202與實施例一中的步驟102一致,在此就不再贅述了。
具體而言,針對待隱藏應用,向桌面發(fā)送該應用已經(jīng)被刪除的廣播消息,形式如:sendPackageBroadcast(Intent.ACTION_PACKAGE_REMOVED,removedPackage Name,extras,null,null,removedUsers)。
203:通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限;
在本實施例中,步驟203可以包括:通過鉤子函數(shù)監(jiān)測用戶進程;在鉤子(hook)函數(shù)監(jiān)測到用戶進程發(fā)送廣播消息時,將廣播消息發(fā)送給服務進程; 通過服務進程將廣播消息的啟動者的編碼更改為具有超級用戶權限的編碼。
當然,為了保證服務進程不會將任意程序發(fā)送服務進程的廣播消息都提升為超級用戶權限,本發(fā)明實施例提供的方法還包括:通過服務進程對廣播消息的啟動者編碼進行驗證;在通過服務進程確定廣播消息的啟動者編碼為用戶進程對應的編碼時,執(zhí)行步驟:通過服務進程將廣播消息的啟動者編碼更改為具有超級用戶權限的編碼。這樣,保證了廣播消息的準確性,避免出現(xiàn)系統(tǒng)故障。
204:根據(jù)權限提升后的廣播消息,在桌面上刪除待隱藏應用的桌面圖標。
步驟204與實施例一中的步驟104一致,在此就不再贅述了。
可以看出,由于該廣播消息時,由于該廣播消息的啟動者編碼為1000,同時又包含了該應用的包名removedPackageName,在啟動器收到該廣播消息后,通過getDataStrings函數(shù)獲得廣播消息中的包名,會認為包名為removedPackageName的應用已經(jīng)被刪除,于是后續(xù)將該應用的快捷方式圖標從啟動器桌面中刪除。多個應用均可以這種技術欺騙方式去操作。
可以看出,從技術原理上,本實施例提供的采用了類似技術欺騙的手段,通過欺騙啟動器進程而實現(xiàn)應用的快捷方式圖標的隱藏和顯示控制。通過分析Android啟動器(Launcher)的代碼便可知曉其運行機理。Android系統(tǒng)的Home應用程序Launcher是由ActivityManagerService啟動的,而ActivityManagerService和PackageManagerService一樣,都是在開機時由SystemServer組件啟動的,SystemServer組件首先是啟動PackageManagerService,由它來負責安裝系統(tǒng)的應用程序,系統(tǒng)中的應用程序安裝好了以后,SystemServer組件接下來就要通過ActivityManagerService來啟動Home應用程序Launcher了,Launcher在啟動的時候便會通過PackageManagerService把系統(tǒng)中已經(jīng)安裝好的應用程序以快捷方式圖標的形式展示在桌面上。將圖標展示到桌面的過程,會調(diào)用queryIntentActivities和getPackageInfo兩個函數(shù),queryIntentActivities用于獲取所有注冊了action.MAIN和action.Launcher的活動組件(Activity)的應用程序,進一步通過 getPackageInfo可以獲得包括應用程序包名在內(nèi)的相關應用程序參數(shù)。這兩個參數(shù)如果得到有效數(shù)據(jù),便能夠?qū)D標展示到桌面上。除此之外,在整個啟動器的進程生命周期中,當其接收到android.intent.action.PACKAGE_REMOVED(表示某一指定包名的應用已經(jīng)被刪除)或android.intent.action.PACKAGE_ADDED(表示某一指定包名的應用已經(jīng)被添加)廣播消息之后,也會調(diào)用上述兩個函數(shù)以期展示已安裝的應用。因此,通過給啟動器發(fā)送上述已刪除的廣播消息,便可讓啟動器以為廣播消息中所包含的指定包名的已經(jīng)被刪除,進一步啟動器調(diào)用queryIntentActivities和getPackageInfo兩個函數(shù)企圖進行桌面展示內(nèi)容更新時,本發(fā)明又將截獲該兩個函數(shù),針對該應用向該兩個函數(shù)返回表征應用已經(jīng)不存在的空值,由此讓啟動器徹底誤信應用不存在,而不再在桌面上展示該應用的快捷方式圖標(如果圖標之前已經(jīng)存在,將被啟動器刪除)。而在用戶需要正常使用該應用,不再隱藏該應用時,本發(fā)明可發(fā)送android.intent.action.PACKAGE_ADDED廣播消息給啟動器,除此之外不再對啟動器的運行過程施加任何干涉,啟動器由此便可以調(diào)用queryIntentActivities和getPackageInfo兩個函數(shù)獲得該應用的特征信息,將其快捷方式圖標正常顯示到桌面上。
但是,如前,啟動器固有的機制中,將通過調(diào)用queryIntentActivities和getPackageInfo兩個函數(shù)去實現(xiàn)桌面內(nèi)容的更新,因此,這兩個函數(shù)會再度發(fā)現(xiàn)的應用,從而使用戶使僅以前述發(fā)送廣播消息的步驟不能實現(xiàn)應用隱藏的目的。這種情況下,需要步驟205輔以完善。
205:在啟動器進程訪問待隱藏應用時,向啟動器進程返回空值,以在啟動器進程對應的啟動器中刪除桌面圖標。
具體來講,在本實施例中,步驟205可以包括:通過鉤子函數(shù)監(jiān)測啟動器進程;在鉤子函數(shù)監(jiān)測到啟動器進程發(fā)出想待隱藏應用的訪問指令時,截獲訪問指令,具體來講,是截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù),并向啟動器進程返回空值。
需要說明的是,步驟205中的鉤子函數(shù)可以和步驟203中的鉤子函數(shù)是兩個不同的鉤子函數(shù),也可以是基于同一鉤子函數(shù)下不同的兩個子鉤子進程,在此不做限制。
可以看出,由于采用了根據(jù)待隱藏應用的設置信息,通過用戶進程向桌面發(fā)送刪除待隱藏應用的廣播消息,并通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限的技術方案,該廣播消息具有了超級用戶權限,所以能夠在桌面上刪除待隱藏應用的桌面圖標,實現(xiàn)了隱藏應用的桌面圖標的技術效果,同時由于本實施例提供的方法僅僅刪除了隱藏應用的桌面圖標,所以不會對應用的正常運行如應用的正常啟動或后臺程序的啟動等等造成影響,從而解決了現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
實施例三
為了實現(xiàn)本發(fā)明實施例提供的隱藏應用的桌面圖標的方法,請參考圖3,圖3為本發(fā)明實施例提供的隱藏應用的桌面圖標的裝置的示意圖,如圖3所示,該裝置包括:
獲取單元301,用于通過用戶進程獲取待隱藏應用的設置信息;
發(fā)送單元302,用于根據(jù)設置信息,通過用戶進程發(fā)送刪除待隱藏應用的廣播消息;
提權單元303,通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限;
刪除單元304,根據(jù)權限提升后的廣播消息,在桌面上刪除待隱藏應用的桌面圖標。
進一步地,在將廣播消息的權項提升為超級用戶權限之后,裝置還包括:
空值返回單元305,用于在啟動器進程訪問待隱藏應用時,向啟動器進程返回空值,以在啟動器進程對應的啟動器中刪除桌面圖標。
進一步地,空值返回單元305具體用于通過鉤子函數(shù)監(jiān)測啟動器進程,并在鉤子函數(shù)監(jiān)測到啟動器進程發(fā)出想待隱藏應用的訪問指令時,截獲訪問指令,并向啟動器進程返回空值。
進一步地,空值返回單元305具體用于截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù)。
進一步地,提權單元303具體用于通過鉤子函數(shù)監(jiān)測用戶進程,并在鉤子函數(shù)監(jiān)測到用戶進程發(fā)送廣播消息時,將廣播消息發(fā)送給服務進程,并通過服務進程將廣播消息的啟動者的編碼更改為具有超級用戶權限的編碼。
進一步地,裝置還包括驗證單元306,驗證單元306用于在通過服務進程將廣播消息的啟動者編碼更改為具有超級用戶權限的編碼之前,通過服務進程對廣播消息的啟動者編碼進行驗證,并在通過服務進程確定廣播消息的啟動者編碼為用戶進程對應的編碼時,提權單元303具體用于通過服務進程將廣播消息的啟動者編碼更改為具有超級用戶權限的編碼。
進一步地,驗證單元306具體用于通過服務進程將廣播消息的啟動者的編碼更改為1000。
本發(fā)明實施例提供的隱藏應用的桌面圖標的裝置,與前述實施例介紹的隱藏應用的桌面圖標的方法是基于同一發(fā)明構思下的兩個方面,在前述實施例中已經(jīng)詳細地介紹了隱藏應用的桌面圖標的方法的運行原理及過程,在此為了說明書的簡潔,就不再贅述了。
本發(fā)明實施例中的一個或者多個技術方案,至少具有如下技術效果或者優(yōu)點:
由于采用了根據(jù)待隱藏應用的設置信息,通過用戶進程向桌面發(fā)送刪除待隱藏應用的廣播消息,并通過具有超級用戶權限的服務進程對廣播消息進行提權處理,將廣播消息的權限提升為超級用戶權限的技術方案,該廣播消息具有了超級用戶權限,所以能夠在桌面上刪除待隱藏應用的桌面圖標,實現(xiàn)了隱藏應用的桌面圖標的技術效果,同時由于本實施例提供的方法僅僅刪除了隱藏應 用的桌面圖標,所以不會對應用的正常運行如應用的正常啟動或后臺程序的啟動等等造成影響,從而解決了現(xiàn)有技術中存在的隱藏應用的桌面圖標時會導致應用無法正常運行的技術問題。
本發(fā)明實施例公開了:
A1、一種隱藏應用的桌面圖標的方法,其特征在于,所述方法包括:
通過用戶進程獲取待隱藏應用的設置信息;
根據(jù)所述設置信息,通過所述用戶進程向桌面發(fā)送刪除所述待隱藏應用的廣播消息;
通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,將所述廣播消息的權限提升為所述超級用戶權限;
根據(jù)權限提升后的所述廣播消息,在所述桌面上刪除所述待隱藏應用的桌面圖標。
A2、根據(jù)A1所述的方法,其特征在于,在所述將所述廣播消息的權項提升為所述超級用戶權限之后,所述方法還包括:
在啟動器進程訪問所述待隱藏應用時,向所述啟動器進程返回空值,以在所述啟動器進程對應的啟動器中刪除所述桌面圖標。
A3、根據(jù)A2所述的方法,其特征在于,所述在啟動器進程訪問所述待隱藏應用時,向所述啟動器進程返回空值,具體包括:
通過鉤子函數(shù)監(jiān)測所述啟動器進程;
在所述鉤子函數(shù)監(jiān)測到所述啟動器進程發(fā)出想所述待隱藏應用的訪問指令時,截獲所述訪問指令,并向所述啟動器進程返回空值。
A4、根據(jù)A3所述的方法,其特征在于,所述截獲所述訪問指令,具體包括:
截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù)。
A5、根據(jù)A1所述的方法,其特征在于,通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,具體包括:
通過鉤子函數(shù)監(jiān)測所述用戶進程;
在所述鉤子函數(shù)監(jiān)測到所述用戶進程發(fā)送所述廣播消息時,將所述廣播消息發(fā)送給所述服務進程;
通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼。
A6、根據(jù)A5所述的方法,其特征在于,在所述通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼之前,所述方法還包括:
通過所述服務進程對所述廣播消息的啟動者編碼進行驗證;
在通過所述服務進程確定所述廣播消息的啟動者編碼為所述用戶進程對應的編碼時,執(zhí)行步驟:通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼。
A7、根據(jù)A5所述的方法,其特征在于,所述通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼,具體包括:
通過所述服務進程將所述廣播消息的啟動者的編碼更改為1000。
B8、一種隱藏應用的桌面圖標的裝置,其特征在于,所述裝置包括:
獲取單元,用于通過用戶進程獲取待隱藏應用的設置信息;
發(fā)送單元,用于根據(jù)所述設置信息,通過所述用戶進程發(fā)送刪除所述待隱藏應用的廣播消息;
提權單元,通過具有超級用戶權限的服務進程對所述廣播消息進行提權處理,將所述廣播消息的權限提升為所述超級用戶權限;
刪除單元,根據(jù)權限提升后的所述廣播消息,在桌面上刪除所述待隱藏應用的桌面圖標。
B9、根據(jù)B8所述的裝置,其特征在于,在所述將所述廣播消息的權項提升為所述超級用戶權限之后,所述裝置還包括:
空值返回單元,用于在啟動器進程訪問所述待隱藏應用時,向所述啟動器 進程返回空值,以在所述啟動器進程對應的啟動器中刪除所述桌面圖標。
B10、根據(jù)B9所述的裝置,其特征在于,所述空值返回單元具體用于通過鉤子函數(shù)監(jiān)測所述啟動器進程,并在所述鉤子函數(shù)監(jiān)測到所述啟動器進程發(fā)出想所述待隱藏應用的訪問指令時,截獲所述訪問指令,并向所述啟動器進程返回空值。
B11、根據(jù)B10所述的裝置,其特征在于,所述空值返回單元具體用于截獲queryIntentActivities、getPackageInfo兩個函數(shù)中的至少一個函數(shù)。
B12、根據(jù)B8所述的裝置,其特征在于,所述提權單元具體用于通過鉤子函數(shù)監(jiān)測所述用戶進程,并在所述鉤子函數(shù)監(jiān)測到所述用戶進程發(fā)送所述廣播消息時,將所述廣播消息發(fā)送給所述服務進程,并通過所述服務進程將所述廣播消息的啟動者的編碼更改為具有所述超級用戶權限的編碼。
B13、根據(jù)B12所述的裝置,其特征在于,所述裝置還包括驗證單元,所述驗證單元用于在所述通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼之前,通過所述服務進程對所述廣播消息的啟動者編碼進行驗證,并在通過所述服務進程確定所述廣播消息的啟動者編碼為所述用戶進程對應的編碼時,所述提權單元具體用于通過所述服務進程將所述廣播消息的啟動者編碼更改為具有所述超級用戶權限的編碼。
B14、根據(jù)B12所述的裝置,其特征在于,所述驗證單元具體用于通過所述服務進程將所述廣播消息的啟動者的編碼更改為1000。
在此提供的算法和顯示不與任何特定計算機、虛擬系統(tǒng)或者其它設備固有相關。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構造這類系統(tǒng)所要求的結(jié)構是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應當明白,可以利用各種編程語言實現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實施方式。
在此處所提供的說明書中,說明了大量具體細節(jié)。然而,能夠理解,本發(fā)明的實施例可以在沒有這些具體細節(jié)的情況下實踐。在一些實例中,并未詳細 示出公知的方法、結(jié)構和技術,以便不模糊對本說明書的理解。
類似地,應當理解,為了精簡本公開并幫助理解各個發(fā)明方面中的一個或多個,在上面對本發(fā)明的示例性實施例的描述中,本發(fā)明的各個特征有時被一起分組到單個實施例、圖、或者對其的描述中。然而,并不應將該公開的方法解釋成反映如下意圖:即所要求保護的本發(fā)明要求比在每個權利要求中所明確記載的特征更多的特征。更確切地說,如下面的權利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個實施例的所有特征。因此,遵循具體實施方式的權利要求書由此明確地并入該具體實施方式,其中每個權利要求本身都作為本發(fā)明的單獨實施例。
本領域那些技術人員可以理解,可以對實施例中的設備中的模塊進行自適應性地改變并且把它們設置在與該實施例不同的一個或多個設備中??梢园褜嵤├械哪K或單元或組件組合成一個模塊或單元或組件,以及此外可以把它們分成多個子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設備的所有過程或單元進行組合。除非另外明確陳述,本說明書(包括伴隨的權利要求、摘要和附圖)中公開的每個特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領域的技術人員能夠理解,盡管在此所述的一些實施例包括其它實施例中所包括的某些特征而不是其它特征,但是不同實施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實施例。例如,在下面的權利要求書中,所要求保護的實施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領域的技術人員應當理解,可以在實踐中使用微處理器或者數(shù)字信號處理器(DSP)來實現(xiàn)根據(jù)本發(fā)明實施例的發(fā)明名稱(如確定網(wǎng)站內(nèi)鏈接等級的裝置)中的一些或者全部部件的一 些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領域技術人員在不脫離所附權利要求的范圍的情況下可設計出替換實施例。在權利要求中,不應將位于括號之間的任何參考符號構造成對權利要求的限制。單詞“包含”不排除存在未列在權利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當編程的計算機來實現(xiàn)。在列舉了若干裝置的單元權利要求中,這些裝置中的若干個可以是通過同一個硬件項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。