新四季網

一種調用應用程式的APK插件的方法及裝置與流程

2023-05-28 15:47:11 2


本申請涉及計算機技術領域,尤其涉及一種調用應用程式的APK插件的方法及裝置。



背景技術:

智能終端在日常生活中扮演了越來越重要的角色,以Android智慧型手機為例,為滿足各種需求,可以將主應用程式即APK(Android Package,Android安裝包)安裝在系統平臺中,當需要某些功能時,就可以打開安裝在系統平臺中的應該程序,來實現某些功能。

但是隨著各行業的進步,應用程式的集成的功能更加豐富且界面更加人性化、絢麗,所以導致了應用程式的體積越來越大,由於應用程式集成的每個功能可能都由不同的開發團隊開發,所以不同功能的更新周期都不盡相同,如果僅為了某個集成在應用程式中的功能就重新安裝應用程式的整個安裝包,顯然即浪費網絡傳輸資源,又浪費智慧型手機的處理資源。況且,有些功能不一定所有人都需要,所以可以將集成在應用程式中功能做成插件,當需要某個功能時,加載並調用對應的插件功能就可以了。比如,以導航軟體為例,主程序包含最基本的導航功能,然而為了滿足個性化的需求,可以在導航軟體中集成擁堵提示,限行提示,違章查詢等。可以將這些功能做成APK插件,當用戶需要時,下載對應的插件,加載並調用即可。

而現有技術在實現APK插件的功能時,需要先將APK插件安裝在系統平臺中,然後加載並調用,如果插件很多,就需要全部安裝。比如,依舊以上文的導航軟體為例,如果需要擁堵提示、限行提示以及違章查詢,就需要下載對應的APK插件,並全部安裝在系統平臺中,佔用系統平臺的存儲空間。也就 是還不能夠在僅下載而不安裝APK插件的情況下,調用該APK插件。



技術實現要素:

本申請實施例提供一種調用應用程式的APK插件的方法,用於在不安裝插件的情況下,調用插件的功能。

本申請實施例提供一種調用應用程式的APK插件的裝置,用於在不安裝插件的情況下,調用插件的功能。

本申請實施例採用下述技術方案:

一種調用應用程式的APK插件的方法,包括:

當接收到調用請求後,應用程式的調用插件活動組件類的子類以APK插件中插件活動組件類是否為空,判斷是否成功加載APK插件;

當加載成功所述APK插件時,實例化所述APK插件中插件活動組件類對應的Activity;

所述APK插件中插件活動組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調用;

當確定所述APK插件以插件形式被所述應用程式調用時,應用程式的調用插件活動組件類的子類調用所述Activity的實例。

優選地,應用程式的調用插件活動組件類的子類調用所述Activity的實例,包括:檢測所述APK插件中是否存在所述Activity;當存在所述Activity時,應用程式的調用插件活動組件類的子類以插件形式調用所述Activity的實例,以便通過Activity實例中的方法實現所述APK插件的功能。

優選地,所述方法還包括:當不存在所述Activity時,應用程式的調用插件活動組件類的子類以非插件形式調用所述Activity的父類方法,以便實現所述APK插件的功能。

優選地,所述方法還包括:當不存在時,再次實例化所述APK插件中插件活動組件類對應的Activity;應用程式的調用插件活動組件類的子類再次調 用所述Activity的實例。

優選地,所述APK插件中插件活動組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調用,包括:所述APK插件中插件活動組件類的子類判斷baseActivity是否為空;當baseActivity不為空時,確定所述APK插件以插件形式被所述應用程式調用。

一種調用應用程式的APK插件的裝置,包括:加載判斷單元、實例化單元、調用形式判斷單元以及調用單元,其中,

所述加載判斷單元,用於當接收到調用請求後,應用程式的調用插件活動組件類的子類以APK插件中插件活動組件類是否為空,判斷是否成功加載APK插件;

所述實例化單元,用於當加載成功所述APK插件時,實例化所述APK插件中插件活動組件類對應的Activity;

所述調用形式判斷單元,用於所述APK插件中插件活動組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調用;

所述調用單元,用於當確定所述APK插件以插件形式被所述應用程式調用,應用程式的調用插件活動組件類的子類調用所述Activity的實例。

優選地,所述調用單元,具體用於:檢測所述APK插件中是否存在所述Activity;當存在所述Activity時,應用程式的調用插件活動組件類的子類以插件形式調用所述Activity的實例,以便通過Activity實例中的方法實現所述APK插件的功能。

優選地,所述調用單元,具體用於:當不存在所述Activity時,應用程式的調用插件活動組件類的子類以非插件形式調用所述Activity的父類方法,以便實現所述APK插件的功能。

優選地,所述調用單元,具體用於:當不存在時,再次實例化所述APK插件中插件活動組件類對應的Activity;應用程式的調用插件活動組件類的子類再次調用所述Activity的實例。

優選地,所述調用形式判斷單元,具體用於:所述APK插件中插件活動組件類的子類判斷baseActivity是否為空;當baseActivity不為空時,確定所述APK插件以插件形式被所述應用程式調用。

本申請實施例採用的上述至少一個技術方案能夠達到以下有益效果:主程序加載插件後,實例化APK插件中插件活動組件類對應的Activity;當確定APK插件以插件形式被主程序調用,主程序的調用插件活動組件類的子類調用Activity的實例,即通過主系統調用主程序對應的方法,主程序調用插件對應的方法,實現了插件的調用。跳過繁瑣複雜的安裝步驟,只需加載插件後即可調用,從而實現插件的功能。

附圖說明

此處所說明的附圖用來提供對本申請的進一步理解,構成本申請的一部分,本申請的示意性實施例及其說明用於解釋本申請,並不構成對本申請的不當限定。在附圖中:

圖1為本申請實施例1提供的一種調用應用程式的APK插件的方法的流程示意圖;

圖2為本申請實施例1提供的主程序的抽象父類的定義示意圖;

圖3為本申請實施例1提供的APK插件的抽象父類的定義示意圖;

圖4為本申請實施例2提供的一種調用應用程式的APK插件的裝置的結構框圖。

具體實施方式

為使本申請的目的、技術方案和優點更加清楚,下面將結合本申請具體實施例及相應的附圖對本申請技術方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例。基於本申請中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施 例,都屬於本申請保護的範圍。

以下結合附圖,詳細說明本申請各實施例提供的技術方案。

實施例1

本申請實施例提出了一種調用應用程式的APK插件的方法,用於在不安裝插件的情況下,調用插件的功能,該方法的流程示意圖如圖1所示,包括下述步驟:

步驟11:當接收到調用請求後,應用程式的調用插件活動組件類的子類以APK插件中插件活動組件類是否為空,判斷是否成功加載APK插件。

在調用插件功能之前,應該先加載APK插件及其對應的邏輯和資源,為了方便調用APK插件提供的功能,規避過多的使用反射機制,本發明將調用APK插件提供的功能抽象為兩個抽象父類。在本申請中,將應用程式看作是安裝在系統平臺中的主程序。其中用於加載APK插件的主程序的抽象父類為調用插件活動組件類(下文簡稱CallPluginActivity),APK插件的抽象父類為插件活動組件類(下文簡稱PluginActivity)。CallPluginActivity和PluginActivity均為抽象類,需要子類實現其相應的方法,因此本文後續描述的CallPluginActivity均也代表CallPluginActivity的實現類,PluginActivity均也代表PluginActivity的實現類,後面將不再贅述。

本實施例中,主程序作為調用插件的程序為已經安裝的應用程式。APK插件為已經下載,可以作為插件調用,也可以和普通APK插件一樣正常安裝的Android應用。主程序的抽象父類CallPluginActivity主要是為了向APK插件中的PluginActivity提供實例,即上下文Context,並加載APK插件。在本發明實施例的一個例子中,主程序的抽象父類的定義如圖2所示。其中,onCreate方法由Android系統調用,用於發起對主程序的調用請求。getOtherResources方法用於通過反射方法加載APK插件的資源並生成Resources句柄(變量名為:pluginRes)。CallPluginActivity通過判斷pluginActivity是否為空來確定是 否成功加載APK插件及其資源;如果判斷出pluginActivity不為空,則確定成功加載APK插件及其資源。

步驟12:當加載成功APK插件時,實例化APK插件中插件活動組件類對應的Activity。

如圖2所示,LoadAPK方法用於生成DexClassLoader和PackageInfo等句柄及文件,並通過反射方法得到對應的PluginActivity子類的實例畫(變量名為:pluginActivity),即實例化APK插件中PluginActivity對應的Activity。

步驟13:APK插件中插件活動組件類的子類以baseActivity是否為空,判斷是否由主程序以插件形式被調用。

APK插件的抽象父類的主要功能是完成APK插件的構建和提供符合Android標準的Activity和Service等。在實施例中,APK插件的抽象父類的定義如圖3所示。其中,onCreate方法由主程序調用,用於發起對APK插件的調用請求。setCallActivity由主程序反射調用並設置自身的實例(pluginActivity)為APK插件的實例(baseActivity)。具體實現方法如下:

public void setCallActivity(CallPluginActivity baseActivity){

Log.d(TAG,"setActivity..."+baseActivity);

this.baseActivity=baseActivity;

}//由主程序反射調用並設置自身實例為插件的baseActivity變量。

所以,可以判斷baseActivity是否為空,如果判斷出baseActivity不為空,則確定本Activity是由主程序以插件的形式調用。

步驟14:當確定APK插件以插件形式被主程序調用時,主程序的調用插件活動組件類的子類調用Activity的實例。

為了實現APK插件子類對應的功能,需要在子類中重寫父類定義的方法。重寫以下方法使APK插件中的PluginActivity受主程序CallPluginActivity的控制,如:onStart、onResume方法,其他方法以此類推;以baseActivity變量是否為空來判斷PluginActivity是由主程序以插件形式啟動,還是以Android 正常啟動(非插件調用的方式):

}//判斷baseActivity是否為空,若不為空則是插件形式調用;否則為系統默認的方法。

以baseActivity變量是否為空來判斷PluginActivity是否由主程序以插件形式調用,如果是插件形式,則調用baseActivity對應方法,正常啟動(非插件調用的方式)則調用其父類對應方法。也就是主程序通過主系統調用主程序對應的方法,主程序調用插件對應的方法。

所以在一種實施方式中,主程序的調用插件活動組件類的子類調用Activity的實例,可以包括:檢測APK插件中是否存在Activity;

當存在Activity時,主程序的調用插件活動組件類的子類以插件形式調用Activity的實例,以便通過Activity實例中的方法實現APK插件的功能。

當不存在Activity時,主程序的調用插件活動組件類的子類以非插件形式調用Activity的父類方法,以便實現APK插件的功能。

在實際應用中,為了能以插件的形式調用APK插件,當不存在時,再次實例化APK插件中插件活動組件類對應的Activity;主程序的調用插件活動組件類的子類再次調用Activity的實例。

採用實施例1提供的該方法,主程序加載插件後,實例化APK插件中插件活動組件類對應的Activity;當確定APK插件以插件形式被主程序調用,主程序的調用插件活動組件類的子類調用Activity的實例,即通過主系統調用主程序對應的方法,主程序調用插件對應的方法,實現了插件的調用。跳過繁瑣 複雜的安裝步驟,只需加載插件後即可調用,從而實現插件的功能。

實施例2

基於相同的發明構思,實施例2提供了一種調用應用程式的APK插件的裝置,用於在不安裝插件的情況下,調用插件的功能。如圖4所示,該裝置包括:加載判斷單元21、實例化單元22、調用形式判斷單元23以及調用單元24,其中,

加載判斷單元21,可以用於當接收到調用請求後,應用程式的調用插件活動組件類的子類以APK插件中插件活動組件類是否為空,判斷是否成功加載APK插件;

實例化單元22,可以用於當加載成功所述APK插件時,實例化所述APK插件中插件活動組件類對應的Activity;

調用形式判斷單元23,可以用於所述APK插件中插件活動組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調用;

調用單元24,可以用於當確定所述APK插件以插件形式被所述應用程式調用,應用程式的調用插件活動組件類的子類調用所述Activity的實例。

在一種實施方式中,調用單元24,可以用於:檢測所述APK插件中是否存在所述Activity;當存在所述Activity時,應用程式的調用插件活動組件類的子類以插件形式調用所述Activity的實例,以便通過Activity實例中的方法實現所述APK插件的功能。

在一種實施方式中,調用單元24,可以用於:當不存在所述Activity時,應用程式的調用插件活動組件類的子類以非插件形式調用所述Activity的父類方法,以便實現所述APK插件的功能。

在一種實施方式中,調用單元24,可以用於:當不存在時,再次實例化所述APK插件中插件活動組件類對應的Activity;應用程式的調用插件活動組件類的子類再次調用所述Activity的實例。

在一種實施方式中,調用形式判斷單元23,可以用於:所述APK插件中插件活動組件類的子類判斷baseActivity是否為空;當baseActivity不為空時,確定所述APK插件以插件形式被所述應用程式調用。

採用實施例2提供的該裝置,主程序加載插件後,實例化APK插件中插件活動組件類對應的Activity;當確定APK插件以插件形式被主程序調用,主程序的調用插件活動組件類的子類調用Activity的實例,即通過主系統調用主程序對應的方法,主程序調用插件對應的方法,實現了插件的調用。跳過繁瑣複雜的安裝步驟,只需加載插件後即可調用,從而實現插件的功能。

本領域內的技術人員應明白,本申請的實施例可提供為方法、系統、或電腦程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例、或結合軟體和硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。

本申請是參照根據本申請實施例的方法、設備(系統)、和電腦程式產品的流程圖和/或方框圖來描述的。應理解可由電腦程式指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合。可提供這些電腦程式指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執行的指令產生用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些電腦程式指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的製造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些電腦程式指令也可裝載到計算機或其他可編程數據處理設備上,使 得在計算機或其他可編程設備上執行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執行的指令提供用於實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

在一個典型的配置中,計算設備包括一個或多個處理器(CPU)、輸入/輸出接口、網絡接口和內存。

內存可能包括計算機可讀介質中的非永久性存儲器,隨機存取存儲器(RAM)和/或非易失性內存等形式,如只讀存儲器(ROM)或快閃記憶體(flash RAM)。內存是計算機可讀介質的示例。

計算機可讀介質包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術來實現信息存儲。信息可以是計算機可讀指令、數據結構、程序的模塊或其他數據。計算機的存儲介質的例子包括,但不限於相變內存(PRAM)、靜態隨機存取存儲器(SRAM)、動態隨機存取存儲器(DRAM)、其他類型的隨機存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內存技術、只讀光碟只讀存儲器(CD-ROM)、數字多功能光碟(DVD)或其他光學存儲、磁盒式磁帶,磁帶磁磁碟存儲或其他磁性存儲設備或任何其他非傳輸介質,可用於存儲可以被計算設備訪問的信息。按照本文中的界定,計算機可讀介質不包括暫存電腦可讀媒體(transitory media),如調製的數據信號和載波。

還需要說明的是,術語「包括」、「包含」或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設備所固有的要素。在沒有更多限制的情況下,由語句「包括一個……」限定的要素,並不排除在包括要素的過程、方法、商品或者設備中還存在另外的相同要素。

本領域技術人員應明白,本申請的實施例可提供為方法、系統或電腦程式產品。因此,本申請可採用完全硬體實施例、完全軟體實施例或結合軟體和 硬體方面的實施例的形式。而且,本申請可採用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限於磁碟存儲器、CD-ROM、光學存儲器等)上實施的電腦程式產品的形式。

以上僅為本申請的實施例而已,並不用於限制本申請。對於本領域技術人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內所作的任何修改、等同替換、改進等,均應包含在本申請的權利要求範圍之內。

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀