應(yīng)用程序運行控制的方法及裝置的制造方法
【專利摘要】本發(fā)明提供了應(yīng)用程序運行控制的方法及裝置,該方法包括:響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。通過本發(fā)明,從根本上實現(xiàn)各類目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行的目的;同時,在保證目標(biāo)應(yīng)用程序與原生應(yīng)用程序分別獨立運行互不干擾的同時,實現(xiàn)了目標(biāo)應(yīng)用程序具有原生應(yīng)用程序的所有功能的目的。
【專利說明】
應(yīng)用程序運行控制的方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種應(yīng)用程序運行控制的方法,及一種應(yīng)用程序運行控制的裝置。
【背景技術(shù)】
[0002]隨著時代的發(fā)展,各種終端設(shè)備已成為人們生活中必不可少的工具,各種功能強(qiáng)大的終端操作系統(tǒng)及終端應(yīng)用程序不斷涌現(xiàn),為用戶帶來了更加便捷的體驗?,F(xiàn)有技術(shù)中,應(yīng)用程序在終端設(shè)備的系統(tǒng)環(huán)境中僅可以唯一的形式安裝并運行,如對于一種即時通信類應(yīng)用程序,在一臺終端設(shè)備中僅可以安裝并運行一個該即時通信類應(yīng)用程序,用戶僅可以通過唯一的賬號登錄并對其執(zhí)行相關(guān)操作。但是,隨著即時通信類應(yīng)用程序的普及,越來越多的用戶希望在一臺終端設(shè)備中通過多個賬號登錄一種即時通信類應(yīng)用程序以實現(xiàn)對不同好友信息的區(qū)分管理及交流?,F(xiàn)有技術(shù)中,具有通過多個域賬號在不同操作系統(tǒng)之間的切換來實現(xiàn)在一臺終端設(shè)備中通過多個賬號登錄一種即時通信類應(yīng)用程序的解決方案。但是,該方案是基于多操作系統(tǒng)才可以實現(xiàn),并不具有普適性。
[0003]同時,現(xiàn)有技術(shù)中還可以利用沙箱技術(shù),使得目標(biāo)應(yīng)用程序可實現(xiàn)原生應(yīng)用程序的全部功能及相應(yīng)服務(wù),但是,在沙箱中運行的目標(biāo)應(yīng)用程序依賴于原生應(yīng)用程序的運行,無法獨立于原生應(yīng)用程序獨自運行于終端設(shè)備中,另一種方式是通過修改應(yīng)用程序配置文件的包名實現(xiàn)雙開技術(shù),但是,該方式無法實現(xiàn)所有種類應(yīng)用程序的雙開,比如一些通過開發(fā)者注冊賬號的應(yīng)用程序。
[0004]因此,需要一種控制目標(biāo)應(yīng)用程序運行的解決方案,使得各類目標(biāo)應(yīng)用程序可實現(xiàn)原生應(yīng)用程序的全部功能及相應(yīng)服務(wù),且目標(biāo)應(yīng)用程序完全獨立于原生應(yīng)用程序運行于終端設(shè)備中,以解決現(xiàn)有技術(shù)中在一臺終端設(shè)備中僅可以安裝并運行一個應(yīng)用程序,用戶僅可以通過唯一的賬號登錄并對其執(zhí)行相關(guān)操作帶來的局限性問題。
【發(fā)明內(nèi)容】
[0005]為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
[0006]本發(fā)明的實施例提出了一種應(yīng)用程序運行控制的方法,包括:
[0007]響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;
[0008]當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;
[0009]將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0010]優(yōu)選地,當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名,包括:
[0011]通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱;
[0012]在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0013]優(yōu)選地,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名,包括:
[0014]在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷預(yù)設(shè)接口的各參數(shù)是否帶有目標(biāo)應(yīng)用程序的運行包名;
[0015]若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將參數(shù)中帶有的目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0016]可選地,還包括:
[0017]創(chuàng)建目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址;
[0018]當(dāng)目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。
[0019]優(yōu)選地,調(diào)用系統(tǒng)資源的預(yù)設(shè)接口,包括調(diào)用以下任一項與目標(biāo)應(yīng)用程序之間的交互接口:
[0020]Activity 組件;
[0021]Service 組件;
[0022]Broadcast Receiver組件;
[0023]Content Provider組件;
[0024]NotifyServer 中間件。
[0025]優(yōu)選地,對應(yīng)同一原生應(yīng)用程序的運行包名的不同目標(biāo)應(yīng)用程序可具有不同的運行包名。
[0026]本發(fā)明的另一實施例提出了一種應(yīng)用程序運行控制的裝置,包括:
[0027]運行模塊,用于響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;
[0028]修改模塊,用于當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;
[0029]執(zhí)行模塊,用于將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0030 ]優(yōu)選地,修改模塊,包括:
[0031 ] 掛鉤單元,用于通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱;
[0032]修改單元,用于在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0033]優(yōu)選地,修改單元,包括:
[0034]判斷子單元,用于在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷預(yù)設(shè)接口的各參數(shù)是否帶有目標(biāo)應(yīng)用程序的運行包名;
[0035]修改子單元,用于若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將參數(shù)中帶有的目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0036]可選地,還包括:
[0037]創(chuàng)建模塊,用于創(chuàng)建目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址;
[0038]寫入模塊,用于當(dāng)目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。
[0039]優(yōu)選地,調(diào)用系統(tǒng)資源的預(yù)設(shè)接口,包括調(diào)用以下任一項與目標(biāo)應(yīng)用程序之間的交互接口:
[0040]Activity 組件;
[0041]Service 組件;
[0042]Broadcast Receiver組件;
[0043]Content Provider組件;
[0044]NotifyServer 中間件。
[0045]優(yōu)選地,對應(yīng)同一原生應(yīng)用程序的運行包名的不同目標(biāo)應(yīng)用程序可具有不同的運行包名。
[0046]本發(fā)明的實施例中,提出了一種應(yīng)用程序運行控制的方案,響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名,為目標(biāo)應(yīng)用程序獨立于原生應(yīng)用程序在終端設(shè)備中正常的運行提供了必要的前提保障;當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名,通過在系統(tǒng)調(diào)用資源的過程中修改目標(biāo)應(yīng)用程序的運行包名,保障了各類目標(biāo)應(yīng)用程序均可實現(xiàn)在終端設(shè)備中的正常運行,避免了因開發(fā)者注冊信息等原因?qū)е履繕?biāo)應(yīng)用程序無法實現(xiàn)在終端設(shè)備中運行的情況,從根本上實現(xiàn)各類目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行的目的;將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作,最終實現(xiàn)目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行,在保證目標(biāo)應(yīng)用程序與原生應(yīng)用程序分別獨立運行互不干擾的同時,實現(xiàn)了目標(biāo)應(yīng)用程序具有原生應(yīng)用程序的所有功能的目的;進(jìn)一步地,突破了原生應(yīng)用程序在同一終端設(shè)備中僅可使用唯一的賬戶進(jìn)行登錄使用的局限,提高了用戶體驗。
[0047]本發(fā)明附加的方面和優(yōu)點將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實踐了解到。
【附圖說明】
[0048]本發(fā)明上述的和/或附加的方面和優(yōu)點從下面結(jié)合附圖對實施例的描述中將變得明顯和容易理解,其中:
[0049]圖1為本發(fā)明中一個實施例的應(yīng)用程序運行控制的方法的流程圖;
[0050]圖2為本發(fā)明中一個優(yōu)選實施例的應(yīng)用程序運行控制的方法的流程圖;
[0051 ]圖3a、圖3b和圖3c為本發(fā)明中一個具體應(yīng)用場景下的應(yīng)用程序運行控制的方法的示意圖;
[0052]圖4為本發(fā)明中另一實施例的應(yīng)用程序運行控制的裝置的結(jié)構(gòu)示意圖;
[0053]圖5為本發(fā)明中另一優(yōu)選實施例的應(yīng)用程序運行控制的裝置的結(jié)構(gòu)示意圖。
【具體實施方式】
[0054]下面詳細(xì)描述本發(fā)明的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本發(fā)明,而不能解釋為對本發(fā)明的限制。
[0055]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時,它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“親接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項的全部或任一單元和全部組合。
[0056]本技術(shù)領(lǐng)域技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。
[0057]本發(fā)明下述實施例描述的應(yīng)用程序運行控制方法所實施的應(yīng)用場景,是安裝在移動終端上的基于Android操作系統(tǒng)的運行環(huán)境,且該運行環(huán)境允許應(yīng)用程序修改Android操作系統(tǒng)的系統(tǒng)源碼。
[0058]圖1為本發(fā)明中一個實施例的應(yīng)用程序運行控制的方法的流程圖。
[0059]本發(fā)明的實施例中,各步驟所執(zhí)行的內(nèi)容概述如下:步驟S110:響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;步驟S120:當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;步驟S130:將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0060]本發(fā)明的實施例中,提出了一種應(yīng)用程序運行控制的方法,響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名,為目標(biāo)應(yīng)用程序獨立于原生應(yīng)用程序在終端設(shè)備中正常的運行提供了必要的前提保障;當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名,通過在系統(tǒng)調(diào)用資源的過程中修改目標(biāo)應(yīng)用程序的運行包名,保障了各類目標(biāo)應(yīng)用程序均可實現(xiàn)在終端設(shè)備中的正常運行,避免了因開發(fā)者注冊信息等原因?qū)е履繕?biāo)應(yīng)用程序無法實現(xiàn)在終端設(shè)備中運行的情況,從根本上實現(xiàn)各類目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行的目的;將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作,最終實現(xiàn)目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行,在保證目標(biāo)應(yīng)用程序與原生應(yīng)用程序分別獨立運行互不干擾的同時,實現(xiàn)了目標(biāo)應(yīng)用程序具有原生應(yīng)用程序的所有功能的目的;進(jìn)一步地,突破了原生應(yīng)用程序在同一終端設(shè)備中僅可使用唯一的賬戶進(jìn)行登錄使用的局限,提高了用戶體驗。以下針對各個步驟的具體實現(xiàn)做進(jìn)一步的說明:
[0061]步驟S110:響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名。
[0062]其中,對應(yīng)同一原生應(yīng)用程序的運行包名的不同目標(biāo)應(yīng)用程序可具有不同的運行包名。例如,在終端設(shè)備中,可運行多個具有不同運行包名的目標(biāo)應(yīng)用程序,該多個具有不同運行包名的目標(biāo)應(yīng)用程序?qū)?yīng)同一原生應(yīng)用程序的運行包名。
[0063]具體地,在終端設(shè)備中,響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名,目標(biāo)應(yīng)用程序與原生應(yīng)用程序可在終端設(shè)備中同時運行,且原生目標(biāo)應(yīng)用程序與其對應(yīng)的原生應(yīng)用程序讀取相同的系統(tǒng)可讀和系統(tǒng)只讀文件。
[0064]Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。Android應(yīng)用程序以APK安裝包的形式提供給用戶進(jìn)行安裝,APK安裝包中,具有用于封裝實現(xiàn)各個組件的程序代碼的classes, dex代碼文件以及用于表達(dá)應(yīng)用程序所用的各個組件的注冊信息以及權(quán)限申請信息等內(nèi)容的Androidmanifest.xml配置文件。
[0065]Android對進(jìn)程的管理,以包名為單位,每個應(yīng)用程序分配一個唯一的包名,由于應(yīng)用程序的安裝過程就是PackageManagerServi ce (PMS)解析Androidmanifest.xml文件的過程,而本發(fā)明中目標(biāo)應(yīng)用程序的包名不同于原生應(yīng)用程序的包名,因此,當(dāng)本地已安裝原生應(yīng)用程序的情況下,目標(biāo)應(yīng)用程序也可同時安裝在本地,實現(xiàn)通過ActivityManagerService(AMS)正常運行目標(biāo)應(yīng)用程序。在Android操作系統(tǒng)中,PMS主要負(fù)責(zé)對系統(tǒng)的所有apk進(jìn)行管理,管理其中的如Acti viey、Service等組件,從apk中解析其中的組件,保存到相關(guān)結(jié)構(gòu)中后,可以通過相關(guān)的接口查詢系統(tǒng)安裝組件,apk的安裝,卸載,刪除都是由PMS負(fù)責(zé)的。在Android操作系統(tǒng)中,AMS不僅用于管理所有應(yīng)用程序進(jìn)程的Activity的生命周期,它同時也管理著系統(tǒng)的Service、Broadcast Receiver以及ContentProvider等組件,在應(yīng)用程序中啟動一個六(:1:;^;^7的方式包括通過調(diào)用8〖31^4(31:;^;^7方法啟動指定的Activity和單擊一個應(yīng)用程序的圖標(biāo)來啟動新的Activity等。
[0066]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊AppI’的圖標(biāo)的操作,運行AppI’,AppI’的圖標(biāo)可以與原生目標(biāo)應(yīng)用程序AppI的圖標(biāo)不同,其中,目標(biāo)應(yīng)用程序Appl’的運行包名,如“com.AA.mm.1”,不同于原生應(yīng)用程序AppI的運行包名,如“com.AA.mm”,App I,與App I可在終端設(shè)備中同時運行,且App I,與AppI共享終端設(shè)備的系統(tǒng)可讀文件以及系統(tǒng)的只讀文件,其中終端設(shè)備的系統(tǒng)可讀文件以及系統(tǒng)的只讀文件包括Activity、Service、Broadcast Receiver、Content Provider以及PMS等的可讀、只讀文件。
[0067]步驟S120:當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0068]具體地,當(dāng)目標(biāo)應(yīng)用程序Appl,通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,目標(biāo)應(yīng)用程序的運行包名為“com.AA.mm.1”對應(yīng)的原生應(yīng)用程序App I的運行包名為“com.AA.mm”,將AppI ’ 的運行包名 “com.AA.mm.1”修改為AppI的運行包名 “com.AA.mm”。
[0069]優(yōu)選地,步驟S120具體包括步驟SI21 (圖中未示出)和步驟S122(圖中未示出);步驟S121:通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱;步驟S122:在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0070]其中,調(diào)用系統(tǒng)資源的預(yù)設(shè)接口,包括但不限于調(diào)用以下任一項與目標(biāo)應(yīng)用程序之間的交互接口:
[0071]Activity 組件;
[0072]Service 組件;
[0073]Broadcast Receiver組件;
[0074]Content Provider組件;
[0075]NotifyServer 中間件。
[0076]這里需要說明的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(system call)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實施例即可采用鉤子hook函數(shù)接管目標(biāo)應(yīng)用程序運行時調(diào)用所需的系統(tǒng)資源執(zhí)行相應(yīng)的運行操作,需要說明的是,本發(fā)明中接管目標(biāo)應(yīng)用程序運行時調(diào)用所需的系統(tǒng)資源執(zhí)行相應(yīng)的運行操作不局限于通過鉤子hook函數(shù)的方式實現(xiàn)。
[0077]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊Appl,的圖標(biāo)的操作,運行Appl ’,其中,Appl,的運行包名“com.AA.mm.1”不同于原生應(yīng)用程序App I的運行包名“com.AA.mm”,在App I的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的Appl ’的進(jìn)程進(jìn)行監(jiān)控,當(dāng)Appl ’請求調(diào)用資源時,鉤子函數(shù)可掛鉤Appl ’調(diào)用資源的資源名稱,得到Appl,調(diào)用資源的資源名稱為Activity組件中的start Activity方法;隨后通過預(yù)設(shè)的調(diào)用Activity組件資源的接口與Activity組件進(jìn)行數(shù)據(jù)交互,在數(shù)據(jù)交互的過程中,將AppI ’ 的運行包名 “com.AA.mm.1”修改為 “com.AA.mm”。
[0078]在一優(yōu)選實施例中,步驟S122具體包括步驟S1221(圖中未示出)和步驟S1222(圖中未示出);步驟S1221:在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷預(yù)設(shè)接口的各參數(shù)是否帶有目標(biāo)應(yīng)用程序的運行包名;步驟S1222:若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將參數(shù)中帶有的目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0079]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊Appl,的圖標(biāo)的操作,運行Appl ’,其中,Appl,的運行包名“com.AA.mm.1”不同于原生應(yīng)用程序App I的運行包名“com.AA.mm”,在App I的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的Appl ’的進(jìn)程進(jìn)行監(jiān)控,當(dāng)Appl ’請求調(diào)用資源時,鉤子函數(shù)可掛鉤Appl ’調(diào)用資源的資源名稱,得到Appl ’調(diào)用資源的資源名稱為Activity組件中的start Activity方法;在預(yù)設(shè)調(diào)用Activity組件資源的接口中,當(dāng)通過創(chuàng)建一個顯示的Intent對象中的CompomentName方法顯不調(diào)用Acti vity 中的 startActi vity 方法時,CompomentName 方法中包括了 packageName參數(shù),packageName參數(shù)為調(diào)用的包名,本實施例中,具體值為“com.AA.mm.1”,Intent對象作為Activity之間傳遞數(shù)據(jù)的組件,通過Intent對象將數(shù)據(jù)封裝起來,傳遞到Appl’需要傳遞的Activity中,通過AMS中的startActivity方法傳遞Intent對象,根據(jù)Intent對象的信息找到匹配的Component信息,AMS會調(diào)用系統(tǒng)內(nèi)部的PackageManager對象去查詢具體的CompomentName方法,在AMS中包括了預(yù)設(shè)對應(yīng)的修改包名的處理方法,將compomentName方法中的packName參數(shù)值“com.AA.mm.I”修改為“com.AA.mm”,實現(xiàn)最終調(diào)用系統(tǒng)的Act i vi ty組件。在調(diào)用其他系統(tǒng)資源組件時,還涉及到修改相應(yīng)的結(jié)構(gòu)體,在相應(yīng)的結(jié)構(gòu)體中將對應(yīng)包名值“com.AA.mm.1”修改為“com.AA.mm”。
[0080]步驟S130:將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0081 ]具體地,將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序調(diào)用所需系統(tǒng)資源的操作。
[0082]例如,接上例,將Appl’所需的系統(tǒng)Activity資源根據(jù)Appl,的包名分配至Appl,,此時Appl ’的包名為“com.AA.mm”,隨后執(zhí)行Appl ’的相應(yīng)運行操作。
[0083]在一優(yōu)選實施例中,如圖2所示,該方法包括步驟S210、步驟S220、步驟S230、步驟S240和步驟S250;步驟S210:響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;步驟S220:當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;步驟S230:將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作;步驟S240:創(chuàng)建目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址;步驟S250:當(dāng)目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。
[0084]其中,本優(yōu)選實施例中終端設(shè)備在步驟S210、步驟S220和步驟S230中執(zhí)行的操作與參照圖1所示的終端設(shè)備在步驟S110、步驟S120和步驟S130中執(zhí)行的操作相同或相似,在此不再贅述。
[0085]例如,在終端設(shè)備中,創(chuàng)建目標(biāo)應(yīng)用程序Appl,寫入數(shù)據(jù)的存儲地址,如創(chuàng)建Appl,寫入數(shù)據(jù)的存儲地址的路徑為“:/sdcard/AA/MicroMsg/”,當(dāng)Appl’執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入Appl ’中的寫入數(shù)據(jù)的存儲地址目錄為“:/sdcard/AA/MicroMsg/”中的MicroMsg文件夾里。
[0086]在一具體應(yīng)用場景中,用戶可在終端設(shè)備中同時運行兩個“微信”的應(yīng)用程序,如圖3a,兩個“微信”的圖標(biāo)相同,其中一個“微信”A是通過運行騰訊官方下載的微信安裝包創(chuàng)建的,另一個“微信”B通過本發(fā)明的實施方式創(chuàng)建的,兩個“微信”進(jìn)程分別用于登錄不同的微信賬號,如圖3b,一個“微信”的登錄賬戶為“al in”,假設(shè)該微信為“微信” A,另一個“微信”的登錄賬戶為“鄭勁松”,假設(shè)該微信為“微信”B,兩個微信互不影響,可同時與外界進(jìn)行通信,也可互相通信,如圖3c,B可實現(xiàn)A中的所有功能,且當(dāng)用戶卸載A后,并不影響B(tài)的正常運行,其中“微信” A的運行包名如“com.ten cent.mm”,“微信” B的運行包名如“com.tencent.mm.1”,當(dāng)檢測到用戶雙擊“微信”B的圖標(biāo)的操作時,在終端設(shè)備中以“com.tencent.mm.1”運行包名運行“微信” B,在“微信” B的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的“微信”B的進(jìn)程進(jìn)行監(jiān)控,當(dāng)“微信”B請求調(diào)用資源時,鉤子函數(shù)可掛鉤“微信”B調(diào)用資源的資源名稱,隨后通過預(yù)設(shè)的調(diào)用該系統(tǒng)資源的接口與該系統(tǒng)資源進(jìn)行數(shù)據(jù)交互,在數(shù)據(jù)交互的過程中,將“微信”B的運行包名“com.tencent.mm.1”修改為“com.tencent.mm”,使得“微信”正常運行,同時,當(dāng)“微信”B中發(fā)生數(shù)據(jù)寫入操作時,將數(shù)據(jù)寫入已創(chuàng)建的“微信” B的寫入數(shù)據(jù)的存儲地址,如將數(shù)據(jù)寫入“:/sdcard/Tencent/MicroMsg/”目錄中的MicroMsg文件夾里。
[0087]圖4為本發(fā)明中另一實施例的應(yīng)用程序運行控制的裝置的結(jié)構(gòu)示意圖。
[0088]本發(fā)明的實施例中,各模塊所執(zhí)行的內(nèi)容概述如下:運行模塊410響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;修改模塊420當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;執(zhí)行模塊430將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0089]本發(fā)明的實施例中,提出了一種應(yīng)用程序運行控制的裝置,響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名,為目標(biāo)應(yīng)用程序獨立于原生應(yīng)用程序在終端設(shè)備中正常的運行提供了必要的前提保障;當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名,通過在系統(tǒng)調(diào)用資源的過程中修改目標(biāo)應(yīng)用程序的運行包名,保障了各類目標(biāo)應(yīng)用程序均可實現(xiàn)在終端設(shè)備中的正常運行,避免了因開發(fā)者注冊信息等原因?qū)е履繕?biāo)應(yīng)用程序無法實現(xiàn)在終端設(shè)備中運行的情況,從根本上實現(xiàn)各類目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行的目的;將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作,最終實現(xiàn)目標(biāo)應(yīng)用程序在終端設(shè)備中正常運行,在保證目標(biāo)應(yīng)用程序與原生應(yīng)用程序分別獨立運行互不干擾的同時,實現(xiàn)了目標(biāo)應(yīng)用程序具有原生應(yīng)用程序的所有功能的目的;進(jìn)一步地,突破了原生應(yīng)用程序在同一終端設(shè)備中僅可使用唯一的賬戶進(jìn)行登錄使用的局限,提高了用戶體驗。以下針對各個模塊的具體實現(xiàn)做進(jìn)一步的說明:
[0090]運行模塊410響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名。
[0091]其中,對應(yīng)同一原生應(yīng)用程序的運行包名的不同目標(biāo)應(yīng)用程序可具有不同的運行包名。例如,在終端設(shè)備中,可運行多個具有不同運行包名的目標(biāo)應(yīng)用程序,該多個具有不同運行包名的目標(biāo)應(yīng)用程序?qū)?yīng)同一原生應(yīng)用程序的運行包名。
[0092]具體地,在終端設(shè)備中,響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名,目標(biāo)應(yīng)用程序與原生應(yīng)用程序可在終端設(shè)備中同時運行,且原生目標(biāo)應(yīng)用程序與其對應(yīng)的原生應(yīng)用程序讀取相同的系統(tǒng)可讀和系統(tǒng)只讀文件。
[0093]Android操作系統(tǒng)有其不同于其他操作系統(tǒng)的原理,Android為開發(fā)者提供四大組件,具體指Activity、Service、Broadcast Receiver以及Content Provider等組件。Android應(yīng)用程序以APK安裝包的形式提供給用戶進(jìn)行安裝,APK安裝包中,具有用于封裝實現(xiàn)各個組件的程序代碼的classes, dex代碼文件以及用于表達(dá)應(yīng)用程序所用的各個組件的注冊信息以及權(quán)限申請信息等內(nèi)容的Androidmanifest.xml配置文件。
[0094]Android對進(jìn)程的管理,以包名為單位,每個應(yīng)用程序分配一個唯一的包名,由于應(yīng)用程序的安裝過程就是PMS解析Androidmanifest.xml文件的過程,而本發(fā)明中目標(biāo)應(yīng)用程序的包名不同于原生應(yīng)用程序的包名,因此,當(dāng)本地已安裝原生應(yīng)用程序的情況下,目標(biāo)應(yīng)用程序也可同時安裝在本地,實現(xiàn)通過AMS正常運行目標(biāo)應(yīng)用程序。在Android操作系統(tǒng)中,PMS主要負(fù)責(zé)對系統(tǒng)的所有apk進(jìn)行管理,管理其中的如Activiey、Service等組件,從apk中解析其中的組件,保存到相關(guān)結(jié)構(gòu)中后,可以通過相關(guān)的接口查詢系統(tǒng)安裝組件,apk的安裝,卸載,刪除都是由PMS負(fù)責(zé)的。在Android操作系統(tǒng)中,AMS不僅用于管理所有應(yīng)用程序進(jìn)程的Acti vity的生命周期,它同時也管理著系統(tǒng)的Service'Broadcast Receiver以及Content Provider等組件,在應(yīng)用程序中啟動一個Acti vity的方式包括通過調(diào)用StartActivity方法啟動指定的Activity和單擊一個應(yīng)用程序的圖標(biāo)來啟動新的Activity等。
[0095]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊AppI’的圖標(biāo)的操作,運行AppI’,AppI’的圖標(biāo)可以與原生目標(biāo)應(yīng)用程序AppI的圖標(biāo)不同,其中,目標(biāo)應(yīng)用程序Appl’的運行包名,如“com.AA.mm.1”,不同于原生應(yīng)用程序AppI的運行包名,如“com.AA.mm”,App I,與App I可在終端設(shè)備中同時運行,且App I,與AppI共享終端設(shè)備的系統(tǒng)可讀文件以及系統(tǒng)的只讀文件,其中終端設(shè)備的系統(tǒng)可讀文件以及系統(tǒng)的只讀文件包括Activity、Service、Broadcast Receiver、Content Provider以及PMS等的可讀、只讀文件。
[0096]修改模塊420當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0097]具體地,當(dāng)目標(biāo)應(yīng)用程序Appl,通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,目標(biāo)應(yīng)用程序的運行包名為“com.AA.mm.1”對應(yīng)的原生應(yīng)用程序App I的運行包名為“com.AA.mm”,將AppI ’ 的運行包名 “com.AA.mm.1”修改為AppI的運行包名 “com.AA.mm”。
[0098]優(yōu)選地,修改模塊420具體包括掛鉤單元(圖中未示出)和修改單元(圖中未示出);掛鉤單元通過鉤子函數(shù)對目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱;修改單元在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0099]其中,調(diào)用系統(tǒng)資源的預(yù)設(shè)接口,包括但不限于調(diào)用以下任一項與目標(biāo)應(yīng)用程序之間的交互接口:
[0100]Activity 組件;
[0101]Service 組件;
[0102]Broadcast Receiver組件;
[0103]Content Provider組件;
[0104]NotifyServer 中間件。
[0105]這里需要說明的是:術(shù)語“鉤子”涵蓋了用于通過攔截在軟件組件之間傳遞的函數(shù)調(diào)用、消息、或事件來改變或增加操作系統(tǒng)、應(yīng)用程序、或其他軟件組件的行為的技術(shù)。而處理這種被攔截的函數(shù)調(diào)用、事件或消息的代碼就被稱為鉤子hook函數(shù)。鉤子通常用于各種目標(biāo),包括對功能進(jìn)行調(diào)試和對功能進(jìn)行擴(kuò)展。其示例可以包括在鍵盤或鼠標(biāo)事件傳遞到應(yīng)用程序之前攔截它們,或者攔截系統(tǒng)調(diào)用(system call)、或者系統(tǒng)函數(shù)行為、函數(shù)執(zhí)行結(jié)果等,以監(jiān)視或修改應(yīng)用程序或其他組件的功能等等。本實施例即可采用鉤子hook函數(shù)接管目標(biāo)應(yīng)用程序運行時調(diào)用所需的系統(tǒng)資源執(zhí)行相應(yīng)的運行操作,需要說明的是,本發(fā)明中接管目標(biāo)應(yīng)用程序運行時調(diào)用所需的系統(tǒng)資源執(zhí)行相應(yīng)的運行操作不局限于通過鉤子hook函數(shù)的方式實現(xiàn)。
[0106]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊Appl,的圖標(biāo)的操作,運行Appl ’,其中,Appl,的運行包名“com.AA.mm.1”不同于原生應(yīng)用程序App I的運行包名“com.AA.mm”,在App I的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的Appl ’的進(jìn)程進(jìn)行監(jiān)控,當(dāng)Appl ’請求調(diào)用資源時,鉤子函數(shù)可掛鉤Appl ’調(diào)用資源的資源名稱,得到Appl,調(diào)用資源的資源名稱為Activity組件中的start Activity方法;隨后通過預(yù)設(shè)的調(diào)用Activity組件資源的接口與Activity組件進(jìn)行數(shù)據(jù)交互,在數(shù)據(jù)交互的過程中,將AppI ’ 的運行包名 “com.AA.mm.1”修改為 “com.AA.mm”。
[0107]在一優(yōu)選實施例中,修改單元具體包括判斷子單元(圖中未示出)和修改子單元(圖中未示出);判斷子單元在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷預(yù)設(shè)接口的各參數(shù)是否帶有目標(biāo)應(yīng)用程序的運行包名;修改子單元若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將參數(shù)中帶有的目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名。
[0108]例如,在終端設(shè)備中,響應(yīng)于用戶啟動目標(biāo)應(yīng)用程序Appl’的操作指令,如檢測到用戶雙擊Appl,的圖標(biāo)的操作,運行Appl ’,其中,Appl,的運行包名“com.AA.mm.1”不同于原生應(yīng)用程序App I的運行包名“com.AA.mm”,在App I的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的Appl ’的進(jìn)程進(jìn)行監(jiān)控,當(dāng)Appl ’請求調(diào)用資源時,鉤子函數(shù)可掛鉤Appl ’調(diào)用資源的資源名稱,得到Appl ’調(diào)用資源的資源名稱為Activity組件中的start Activity方法;在預(yù)設(shè)調(diào)用Activity組件資源的接口中,當(dāng)通過創(chuàng)建一個顯示的Intent對象中的CompomentName方法顯不調(diào)用Acti vity 中的 startActi vity 方法時,CompomentName 方法中包括了 packageName參數(shù),packageName參數(shù)為調(diào)用的包名,本實施例中,具體值為“com.AA.mm.1”,Intent對象作為Activity之間傳遞數(shù)據(jù)的組件,通過Intent對象將數(shù)據(jù)封裝起來,傳遞到Appl’需要傳遞的Activity中,通過AMS中的startActivity方法傳遞Intent對象,根據(jù)Intent對象的信息找到匹配的Component信息,AMS會調(diào)用系統(tǒng)內(nèi)部的PackageManager對象去查詢具體的CompomentName方法,在AMS中包括了預(yù)設(shè)對應(yīng)的修改包名的處理方法,將compomentName方法中的packName參數(shù)值“com.AA.mm.I”修改為“com.AA.mm”,實現(xiàn)最終調(diào)用系統(tǒng)的Act i vi ty組件。在調(diào)用其他系統(tǒng)資源組件時,還涉及到修改相應(yīng)的結(jié)構(gòu)體,在相應(yīng)的結(jié)構(gòu)體中將對應(yīng)包名值“com.AA.mm.1”修改為“com.AA.mm”。
[0109]執(zhí)行模塊430將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作。
[0110]具體地,將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序調(diào)用所需系統(tǒng)資源的操作。
[0?11 ]例如,接上例,將Appl ’所需的系統(tǒng)Activity資源根據(jù)Appl ’的包名分配至Appl ’,此時Appl,的包名為“com.AA.mm”,隨后執(zhí)行Appl,的相應(yīng)運行操作。
[0112]在一優(yōu)選實施例中,如圖5所不,該裝置包括運行模塊510、修改模塊520、執(zhí)行模塊530、創(chuàng)建模塊540和寫入模塊550;運行模塊510響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行目標(biāo)應(yīng)用程序,其中,目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名;修改模塊520當(dāng)目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將目標(biāo)應(yīng)用程序的運行包名修改為原生應(yīng)用程序的運行包名;執(zhí)行模塊530將所需系統(tǒng)資源分配至修改運行包名后的目標(biāo)應(yīng)用程序,以執(zhí)行目標(biāo)應(yīng)用程序的相應(yīng)運行操作;創(chuàng)建模塊540創(chuàng)建目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址;寫入模塊550當(dāng)目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。
[0113]其中,本優(yōu)選實施例中終端設(shè)備在運行模塊510、修改模塊520和執(zhí)行模塊530中執(zhí)行的操作與參照圖4所示的終端設(shè)備在運行模塊410、修改模塊420和執(zhí)行模塊430中執(zhí)行的操作相同或相似,在此不再贅述。
[0114]例如,在終端設(shè)備中,創(chuàng)建目標(biāo)應(yīng)用程序Appl’寫入數(shù)據(jù)的存儲地址,如創(chuàng)建AppI ’寫入數(shù)據(jù)的存儲地址的路徑為“:/sdcard/AA/MicroMsg/”,當(dāng)Appl’執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入Appl ’中的寫入數(shù)據(jù)的存儲地址目錄為“:/sdcard/AA/MicroMsg/”中的MicroMsg文件夾里。
[0115]在一具體應(yīng)用場景中,用戶可在終端設(shè)備中同時運行兩個“微信”的應(yīng)用程序,如圖3a,兩個“微信”的圖標(biāo)相同,其中一個“微信”A是通過運行騰訊官方下載的微信安裝包創(chuàng)建的,另一個“微信”B通過本發(fā)明的實施方式創(chuàng)建的,兩個“微信”進(jìn)程分別用于登錄不同的微信賬號,如圖3b,一個“微信”的登錄賬戶為“al in”,假設(shè)該微信為“微信” A,另一個“微信”的登錄賬戶為“鄭勁松”,假設(shè)該微信為“微信”B,兩個微信互不影響,可同時與外界進(jìn)行通信,也可互相通信,如圖3c,B可實現(xiàn)A中的所有功能,且當(dāng)用戶卸載A后,并不影響B(tài)的正常運行,其中“微信” A的運行包名如“com.tencent.mm”,“微信” B的運行包名如“com.tencent.mm.1”,當(dāng)檢測到用戶雙擊“微信”B的圖標(biāo)的操作時,在終端設(shè)備中以“com.tencent.mm.1”運行包名運行“微信” B,在“微信” B的運行過程中,通過鉤子函數(shù)對已創(chuàng)建的“微信”B的進(jìn)程進(jìn)行監(jiān)控,當(dāng)“微信”B請求調(diào)用資源時,鉤子函數(shù)可掛鉤“微信”B調(diào)用資源的資源名稱,隨后通過預(yù)設(shè)的調(diào)用該系統(tǒng)資源的接口與該系統(tǒng)資源進(jìn)行數(shù)據(jù)交互,在數(shù)據(jù)交互的過程中,將“微信”B的運行包名“com.tencent.mm.1”修改為“com.tencent.mm”,使得“微信”正常運行,同時,當(dāng)“微信”B中發(fā)生數(shù)據(jù)寫入操作時,將數(shù)據(jù)寫入已創(chuàng)建的“微信” B的寫入數(shù)據(jù)的存儲地址,如將數(shù)據(jù)寫入“:/sdcard/Tencent/MicroMsg/”目錄中的MicroMsg文件夾里。
[0116]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項或多項的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計和制造,或者也可以包括通用計算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計算機(jī)程序,這些計算機(jī)程序選擇性地激活或重構(gòu)。這樣的計算機(jī)程序可以被存儲在設(shè)備(例如,計算機(jī))可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、CD-ROM、和磁光盤)、R0M(Read-0nly Memory,只讀存儲器)、RAM (Random Access Memory,隨即存儲器)、EPR0M(Erasable ProgrammableRead-Only Memory,可擦寫可編程只讀存儲器)、EEPR0M(E1 ectricalIy ErasableProgrammable Read-Only Memory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計算機(jī))以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。
[0117]本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以用計算機(jī)程序指令來實現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本技術(shù)領(lǐng)域技術(shù)人員可以理解,可以將這些計算機(jī)程序指令提供給通用計算機(jī)、專業(yè)計算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實現(xiàn),從而通過計算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。
[0118]本技術(shù)領(lǐng)域技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。
[0119]以上所述僅是本發(fā)明的部分實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【主權(quán)項】
1.一種應(yīng)用程序運行控制的方法,包括: 響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行所述目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名; 當(dāng)所述目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名; 將所需系統(tǒng)資源分配至修改運行包名后的所述目標(biāo)應(yīng)用程序,以執(zhí)行所述目標(biāo)應(yīng)用程序的相應(yīng)運行操作。2.根據(jù)權(quán)利要求1所述的方法,當(dāng)所述目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名,包括: 通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤所述目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱; 在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名。3.根據(jù)權(quán)利要求2所述的方法,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名,包括: 在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷所述預(yù)設(shè)接口的各參數(shù)是否帶有所述目標(biāo)應(yīng)用程序的運行包名; 若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將所述參數(shù)中帶有的所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名。4.根據(jù)權(quán)利要求1所述的方法,還包括: 創(chuàng)建所述目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址; 當(dāng)所述目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入所述目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。5.根據(jù)權(quán)利要求2所述的方法,所述調(diào)用系統(tǒng)資源的預(yù)設(shè)接口,包括調(diào)用以下任一項與所述目標(biāo)應(yīng)用程序之間的交互接口: Activity 組件; Serv ice組件; Broadcast Receiver組件; Content Provider組件; NotifyServer 中間件。6.根據(jù)權(quán)利要求1所述的方法,對應(yīng)同一原生應(yīng)用程序的運行包名的不同目標(biāo)應(yīng)用程序可具有不同的運行包名。7.一種應(yīng)用程序運行控制的裝置,包括: 運行模塊,用于響應(yīng)于啟動目標(biāo)應(yīng)用程序的操作指令,運行所述目標(biāo)應(yīng)用程序,其中,所述目標(biāo)應(yīng)用程序的運行包名不同于原生應(yīng)用程序的運行包名; 修改模塊,用于當(dāng)所述目標(biāo)應(yīng)用程序通過調(diào)用其所需系統(tǒng)資源執(zhí)行相應(yīng)的運行操作時,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名; 執(zhí)行模塊,用于將所需系統(tǒng)資源分配至修改運行包名后的所述目標(biāo)應(yīng)用程序,以執(zhí)行所述目標(biāo)應(yīng)用程序的相應(yīng)運行操作。8.根據(jù)權(quán)利要求7所述的裝置,所述修改模塊,包括: 掛鉤單元,用于通過鉤子函數(shù)對所述目標(biāo)應(yīng)用程序的進(jìn)程進(jìn)行監(jiān)控以掛鉤所述目標(biāo)應(yīng)用程序調(diào)用系統(tǒng)資源的資源名稱; 修改單元,用于在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中,將所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名。9.根據(jù)權(quán)利要求8所述的裝置,所述修改單元,包括: 判斷子單元,用于在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中判斷所述預(yù)設(shè)接口的各參數(shù)是否帶有所述目標(biāo)應(yīng)用程序的運行包名; 修改子單元,用于若帶有,在調(diào)用系統(tǒng)資源的預(yù)設(shè)接口中將所述參數(shù)中帶有的所述目標(biāo)應(yīng)用程序的運行包名修改為所述原生應(yīng)用程序的運行包名。10.根據(jù)權(quán)利要求7所述的裝置,還包括: 創(chuàng)建模塊,用于創(chuàng)建所述目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址; 寫入模塊,用于當(dāng)所述目標(biāo)應(yīng)用程序執(zhí)行數(shù)據(jù)寫入操作時,將數(shù)據(jù)相應(yīng)地寫入所述目標(biāo)應(yīng)用程序?qū)懭霐?shù)據(jù)的存儲地址。
【文檔編號】G06F9/445GK106066803SQ201610353934
【公開日】2016年11月2日
【申請日】2016年5月25日 公開號201610353934.2, CN 106066803 A, CN 106066803A, CN 201610353934, CN-A-106066803, CN106066803 A, CN106066803A, CN201610353934, CN201610353934.2
【發(fā)明人】鄭勁松, 宋麗, 楊東, 李涓
【申請人】北京奇虎科技有限公司, 奇智軟件(北京)有限公司