專利名稱:一種基于文件類型的Android構件透明加載方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明提供了一種在Android操作系統(tǒng)上一種基于文件類型透明加載構件的方 法,具體就是根據(jù)需要操作的文件類型在本機和構件庫查找支持該類型的構件,如果本地 沒有則從構件庫動態(tài)加載,屬于移動計算領域。
背景技術:
Android操作系統(tǒng)是Google公司于2007年11月5日發(fā)布的基于Linux平臺的開 源手機操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應用軟件組成,號稱是首 個為移動終端打造的真正開放和完整的移動軟件。軟件構件(software component)軟件系統(tǒng)中具有相對獨立功能,可以明確辨識、 接口由規(guī)約指定、與語境有明顯依賴關系,可獨立部署,且多由第三方提供的可組裝軟件實 體。軟件構件須承載有用的功能,并遵循某種構件模型。可復用構件是指具有可復用價值 的構件。當前使用Android操作系統(tǒng)的用戶通過手機上的文件瀏覽器或者手機上其它應 用程序需要打開某種類型文件的時候,如果該手機上不支持這種類型的文件格式,則用戶 必須確定支持該類型的軟件,然后手動進行安裝才能正常瀏覽該文件,在這一過程中,需要 反復上網(wǎng)查找,并需要手動進行應用的安裝,完成后再次打開該文件才能響應用戶的請求, 影響用戶的體驗。
發(fā)明內(nèi)容
在本文中,構件指的是使用我們實現(xiàn)的構件化工具將Android操作系統(tǒng)上可運行 的APK文件進行構件化后的軟件包,構件化后的構件中包含原始APK文件、應用的名字、應 用的版本號、應用支持的打開文件類型、應用的描述等,構件庫管理人員負責對Android操 作系統(tǒng)中可執(zhí)行的應用程序進行構件化,并上傳至用戶構件庫。本發(fā)明的目的在于為Android操作系統(tǒng)提供一種基于文件類型透明加載構件的 方法,使得用戶在打開某種類型文件時候,不必去關心本地是否已經(jīng)安裝支持的軟件,只要 構件庫中有,則一定可以打開。本發(fā)明的系統(tǒng)由客戶端、構件請求服務器和構件庫服務器組成,客戶端位于 Framework層中的PackageManagerService (程序安裝服務),包括了服務器設置模塊、文 件類型解析模塊、文件獲取模塊、構件安裝模塊和桌面刷新模塊。構件請求服務器位于PC 上,包括監(jiān)聽模塊、構件類型處理模塊和文件傳輸模塊;構件庫服務器負責構件的生成、存 儲、并負責響應構件請求服務器的請求。手機用戶或者手機應用程序需要打開某種類型的 文件時候,通過調(diào)用ActivityManager要求啟動參數(shù)為文件類型、文件路徑的Intent,啟動 過程中首先會通過PackageManagerService中的文件類型解析模塊查詢支持該文件類型 的構件,如果找到,則使用該構件打開文件;否則向構件請求服務器發(fā)出包含文件類型的請 求,構件請求服務器接收到請求后,調(diào)用構件類型處理模塊,該模塊從構件庫中根據(jù)類型進行查詢,如果可以找到,則調(diào)用文件傳輸模塊將該構件傳回客戶端;客戶端的文件類型解析 模塊接收到該構件后,調(diào)用構件安裝模塊進行安裝,重新調(diào)用文件類型解析模塊,此時就可 以打開文件。本發(fā)明對應的流程圖如圖1所示,詳細技術方案如下A.構件庫服務器接收構件上傳,上傳過程中構件庫內(nèi)置的程序會將應用打包成為 自定義的構件格式;1.構件庫管理人員使用構件庫自帶的web界面工具或者使用批量上傳工具將使 用者可能會使用的APK文件上傳至構件庫。用戶只需上傳APK文件,構件庫內(nèi)置的程序會 從APK文件中提取出應用的名字、應用的版本號、應用的描述等,與APK文件一起打包成為 自定義的構件格式,最終上傳到構件庫的數(shù)據(jù)庫中;2.構件庫管理人員也可以使用構件庫自帶的web界面工具查詢構件庫中構件的 fn息;B.手機端的服務器設置模塊在連接不上構件請求服務器時,會顯示連接不上不上 構件請求服務器的警告,點擊可設置構件請求服務器地址和端口 ;C.手機客戶端接收到手機用戶或者手機應用程序打開某種類型的文件的請求后, 通過socket連接從構件請求服務器獲取支持該類型文件的構件信息的請求;1.客戶端的文件類型解析模塊在本地查找是否安裝支持該類型的文件,如果找 到,則直接打開文件即可;2.如果沒有找到,文件類型解析模塊向構件請求服務器發(fā)出包含文件類型的請 求,具體如下i.該模塊首先獲取手機操作系統(tǒng)信息(And roid操作系統(tǒng)的版本號)和用戶標志 名;ii.該模塊與遠程構件請求服務器端建立一個連接,并將包含上述信息、要打開的 文件類型和該請求的標識封裝為一個包,發(fā)送給構件請求服務器;iii.該模塊接下來等待遠程構件請求服務器的回應;3.構件請求服務器的監(jiān)聽模塊接收到客戶端請求支持特定類型構件的請求后,創(chuàng)
建響應線程調(diào)用構件類型處理模塊,具體處理如下1.該模塊接收到某個手機客戶端的請求后,創(chuàng)建一個線程來處理這個請求,完成 創(chuàng)建線程的工作后該模塊繼續(xù)等待接收下一個請求,該線程調(diào)用構件類型處理模塊;2.構件類型處理模塊從收到的包中抽取出來用戶標識進行身份驗證,并記錄到系 統(tǒng)日志中;3.構件列表處理模塊從收到的包中抽取出來Android操作系統(tǒng)的版本號和要打 開的文件類型作為參數(shù),從構件庫中查詢適合該版本號和文件類型的所有構件信息,每個 檢索到的構件將構件的名字、構件的版本號和構件在構件庫中標識UUID取出,查找到的構 件數(shù)量加上所有的信息組成一個包,如果沒有查詢到則發(fā)送0 (沒有);4.將上述包中的信息發(fā)送回手機客戶端;D.手機客戶端根據(jù)接收到的可以打開該類型文件的構件信息由用戶進行選擇,確 定后從構件請求服務器獲取構件并安裝;
1.手機端的文件類型解析模塊得到構件請求服務器發(fā)回的包后,如果該包首個字 符為0,則打開文件失敗,否則進行操作i.如果有多于一個符合條件的構件,則彈出窗口由用戶進行選擇;ii.用戶選擇后,調(diào)用文件獲取模塊,將用戶標識、選定構件的UUID和請求標識發(fā) 送到構件請求服務器;2.用文件獲取模塊繼續(xù)等待構件請求服務器響應;3.構件請求服務器的監(jiān)聽模塊接收到客戶端請求構件的請求后,創(chuàng)建響應線程調(diào) 用文件傳輸模塊,具體處理如下i.該模塊接收到某個手機客戶端的請求后,創(chuàng)建一個線程來處理這個請求,完成 創(chuàng)建線程的工作后該模塊繼續(xù)等待接收下一個請求,該線程調(diào)用文件傳輸模塊;ii.文件傳輸模塊從收到的包中抽取出來用戶標識進行身份驗證,并記錄到系統(tǒng) 日志中;iii.文件傳輸模塊根據(jù)接收到的包中的構件UUID,從構件庫獲得構件文件;iv.將該構件文件發(fā)送回手機客戶端;4.手機端的文件獲取模塊得到構件請求服務器發(fā)回的包后,將該構件存儲在本地 緩存中,并調(diào)用構件安裝模塊進行構件安裝i.文件獲取模塊將接收到的包存儲在手機SD卡上的臨時文件目錄;ii.向Android操作系統(tǒng)的PackageManager服務發(fā)出安裝應用請求;iii. PackageManager服務安裝結束后,調(diào)用桌面刷新模塊;5.桌面刷新模塊更新構件列表中構件狀態(tài),刷新桌面圖標;E.在安裝結束后通知文件類型解析模塊重新進行解析,并最終調(diào)用新安裝的構件 打開文件。本發(fā)明的還包括一個實現(xiàn)上述方法的系統(tǒng),如圖2所示。該系統(tǒng)由客戶端、構件請 求服務器和構件庫服務器組成,客戶端位于Framework層中的PackageManagerService (程 序安裝服務),包括了服務器設置模塊、文件類型解析模塊、文件獲取模塊、構件安裝模塊和 桌面刷新模塊。主要完成解析用戶選擇文件的文件類型,與構件請求服務器端通信,并獲取 文件。構件請求服務器位于PC上,包括監(jiān)聽模塊、構件類型處理模塊和文件傳輸模塊;負責 響應來自客戶端的請求并根據(jù)請求和構件庫服務器通信,發(fā)送文件給客戶端。構件庫服務 器負責構件的生成、存儲、并負責響應構件請求服務器的請求。-服務器設置模塊用于設置構件請求服務器的IP和端口;-文件類型解析模塊負責在本地查詢是否支持該類型的文件,如果不支持,向構 件請求服務器發(fā)出請求;-文件獲取模塊根據(jù)用戶請求,從服務器獲取所需構件文件;-構件安裝模塊用來安裝下載完成后的構件;-桌面刷新模塊安裝完成后,刷新手機桌面的程序列表和其它相關聯(lián)信息;-監(jiān)聽模塊主要用于接收客戶端發(fā)來的請求;-構件類型處理模塊從構件庫服務器查詢支持該類型的構件,如果支持該文件 類型,則組裝該構件信息,發(fā)回客戶端;-文件傳輸模塊根據(jù)接到的請求,向客戶端發(fā)回所請求的文件;
-構件庫服務器負責接受用戶上傳構件,提供Web界面工具查詢,并相應構件請 求服務器請求。
圖1:本發(fā)明的方法流程2 本發(fā)明的系統(tǒng)結構圖
具體實施例方式下面通過實例對本發(fā)明做進一步的說明,但是需要注意的是,公布實施例的目的 在于幫助進一步理解本發(fā)明,但是本領域的技術人員可以理解在不脫離本發(fā)明及所附的 權利要求的精神和范圍內(nèi),各種替換和修改都是可能的。因此,本發(fā)明不應局限于實施例所 公開的內(nèi)容,本發(fā)明要求保護的范圍以權利要求書界定的范圍為準。下面的實施方式使用HTC G2,Android操作系統(tǒng)版本為1. 6。A.根據(jù)訪問的數(shù)據(jù)類型動態(tài)加載構件(以用戶打開郵件附件中的Pdf文件為例, 構件庫中用存在支持該類型文件的構件,但是手機客戶端沒有安裝)1.向構件庫上傳該應用;2.用戶通過郵件客戶端打開郵件(該郵件包含一個Pdf附件,且手機以前沒有安 裝支持Pdf的應用程序);3.用戶點擊該附件后,會調(diào)用StartActivity方法,該方法中設置了文件類型 (minetype)以及文件路徑;4. StartActivity會調(diào)用系統(tǒng)中解析時根據(jù)文件類型調(diào)用PackageManager解析 該文件類型,因為系統(tǒng)沒有安裝支持Pdf的應用,因此在該過程中會失??;5.此時向構件請求服務器發(fā)出請求gettp:pdf ;6.構件請求服務器在構件庫中查詢支持pdf格式的構件,找到支持Android操作 系統(tǒng)的PDF閱讀器構件,并發(fā)送回客戶端;7.接到構件請求服務器傳送到的構件之后就將其存儲在本地,且調(diào)用 PackageManager進行自動安裝(期間不需要用戶交互操作);8.完成之后使用新安裝的程序打開該pdf文件。
權利要求
一種基于文件類型的Android構件透明加載方法,其特征在于,包括以下步驟a)構件庫服務器接收構件上傳,上傳過程中構件庫內(nèi)置的程序會將應用打包成為自定義的構件格式;b)手機端的服務器設置模塊在連接不上構件請求服務器時,會顯示連接不上不上構件請求服務器的警告,點擊可設置構件請求服務器地址和端口;c)手機客戶端接收到手機用戶或者手機應用程序打開某種類型的文件的請求后,通過socket連接從構件請求服務器端獲取支持該類型文件的構件信息;d)手機客戶端把接收到的可以打開該類型文件的構件信息交由用戶進行選擇,確定后從構件請求服務器獲取構件并安裝;e)在安裝結束后通知文件類型解析模塊重新進行解析,并最終調(diào)用新安裝的構件打開文件。
2.如權利要求1所述的方法,其特征在于,所述步驟A的具體步驟如下Al.構件庫管理人員使用構件庫自帶的web界面工具工具查詢構件庫中構件的信息; A2.構件庫管理人員使用構件庫自帶的web界面工具或者使用批量上傳工具將應用程 序構件APK文件上傳至構件庫;A3.構件庫內(nèi)置的程序會從APK文件中提取出應用的名字、應用的版本號、應用的描述 等,與APK文件一起打包成為自定義的構件格式,保存到構件庫的數(shù)據(jù)庫中。
3.如權利要求2所述的方法,其特征在于,所述步驟C的實現(xiàn)方法為Bi.客戶端的文件類型解析模塊在本地查找是否安裝支持該類型的文件,如果找到,則 直接打開文件;B2.如果沒有找到,文件類型解析模塊向構件請求服務器發(fā)出包含文件類型的請求,具 體如下i.首先獲取手機操作系統(tǒng)信息(Android操作系統(tǒng)的版本號)和用戶標志名; .該模塊與遠程構件請求服務器端建立一個socket連接,并將包含上述信息加上該 請求的標識封裝為一個包,發(fā)送給構件請求服務器端;iii.該模塊接下來等待遠程構件請求服務器端的回應;B3.構件請求服務器的監(jiān)聽模塊接收到客戶端請求支持特定類型構件的請求后,創(chuàng)建 響應線程調(diào)用構件類型處理模塊,具體處理如下i.接收到某個手機客戶端的請求后,創(chuàng)建一個線程來處理這個請求,完成創(chuàng)建線程的 工作后該模塊繼續(xù)等待接收下一個請求,該線程調(diào)用構件類型處理模塊; .構件列表處理模塊從收到的包中抽取出來用戶標識進行身份驗證,并記錄到系統(tǒng) 日志中;iii.構件列表處理模塊從收到的包中抽取出來Android操作系統(tǒng)的版本號和要打開 的文件類型作為參數(shù),從構件庫中查詢適合該版本號和文件類型的所有構件信息,每個檢 索到的構件將構件的名字、構件的版本號和構件在構件庫中標識UUID取出,查找到的構件 數(shù)量加上所有的信息組成一個包,如果沒有查詢到則發(fā)送0 (沒有);iv.將上述包中的信息通過socket連接發(fā)送回手機客戶端;
4.如權利要求3所述的方法,其特征在于,所述步驟D的實現(xiàn)方法為Dl.手機端的文件類型解析模塊得到構件請求服務器發(fā)回的包后,如果該包首個字符為0,則打開文件失敗,否則進行操作,具體步驟如下i.如果有多于一個符合條件的構件,則彈出窗口由用戶進行選擇; .用戶選擇后,調(diào)用文件獲取模塊,將用戶標識、選定構件的UUID和請求標識發(fā)送到 構件請求服務器;D2.用文件獲取模塊繼續(xù)等待構件請求服務器響應;D3.構件請求服務器的監(jiān)聽模塊接收到客戶端請求構件的請求后,創(chuàng)建響應線程調(diào)用 文件傳輸模塊,具體處理如下i.該模塊接收到某個手機客戶端的請求后,創(chuàng)建一個線程來處理這個請求,完成創(chuàng)建 線程的工作后該模塊繼續(xù)等待接收下一個請求,該線程調(diào)用文件傳輸模塊; .文件傳輸模塊從收到的包中抽取出來用戶標識進行身份驗證,并記錄到系統(tǒng)日志中;iii.文件傳輸模塊根據(jù)接收到的包中的構件UUID,從構件庫獲得構件文件;iv.將該構件文件發(fā)送回手機客戶端;;D4.手機端的文件獲取模塊得到構件請求服務器發(fā)回的包后,將該構件存儲在本地緩 存中,并調(diào)用構件安裝模塊進行構件安裝,具體處理如下i.文件獲取模塊將接收到的包存儲在手機SD卡上的臨時文件目錄; .向Android操作系統(tǒng)的PackageManager服務發(fā)出安裝應用請求; iii. PackageManager服務安裝結束后,調(diào)用桌面刷新模塊;
5.如權利要求4所述的系統(tǒng),其特征在于,該系統(tǒng)包括以下幾個模塊 -服務器設置模塊用于設置構件請求服務器的IP和端口 ;-文件類型解析模塊負責在本地查詢是否支持該類型的文件,如果不支持,向構件請 求服務器發(fā)出請求;-文件獲取模塊根據(jù)用戶請求,從服務器獲取所需構件文件; -構件安裝模塊用來安裝下載完成后的構件;-桌面刷新模塊安裝完成后,刷新手機桌面的程序列表和其它相關聯(lián)信息; -監(jiān)聽模塊主要用于接收客戶端發(fā)來的請求;-構件類型處理模塊從構件庫服務器查詢支持該類型的構件,如果支持該文件類型, 則組裝該構件信息,發(fā)回客戶端;-文件傳輸模塊根據(jù)接到的請求,向客戶端發(fā)回所請求的文件; -構件庫服務器負責接受用戶上傳構件,提供Web界面工具查詢,并相應構件請求服 務器請求。各模塊之間的關系如下1)客戶端位于Framework層中的PackageManagerService(程序安裝服務),包括了服 務器設置模塊、文件類型解析模塊、文件獲取模塊、構件安裝模塊和桌面刷新模塊;主要完 成解析用戶選擇文件的文件類型,與構件請求服務器端通信,并獲取文件;2)構件請求服務器位于PC上,包括監(jiān)聽模塊、構件類型處理模塊和文件傳輸模塊;負 責響應來自客戶端的請求并根據(jù)請求和構件庫服務器通信,發(fā)送文件給客戶端;3)構件庫服務器負責構件的生成、存儲、并負責響應構件請求服務器的請求。全文摘要
本發(fā)明公布了一種基于文件類型的Android構件透明加載方法,屬于移動計算領域。本發(fā)明提出的方法主要包括以下步驟A.通過構件入庫工具向構件庫上傳構件;B.手機客戶端設置構件庫服務器地址和端口;C.手機客戶端接收到手機用戶或者手機應用程序打開某種類型的文件的請求后,從構件請求服務器端獲取支持該類型文件的構件信息;D.手機客戶端把接收到的構件信息交由用戶進行選擇,確定后從構件請求服務器獲取構件并安裝;E.在安裝結束后通知文件類型解析模塊重新進行解析,并最終調(diào)用新安裝的構件打開文件。本發(fā)明將用戶從繁瑣的查找支持某種類型的應用名稱、下載應用、安裝的過程中解脫出來,有效提高用戶的體驗。
文檔編號H04L29/08GK101924798SQ20101027495
公開日2010年12月22日 申請日期2010年9月8日 優(yōu)先權日2010年9月8日
發(fā)明者孫劍, 趙霞, 郭耀, 陳向群 申請人:北京大學