專利名稱:一種移動(dòng)Widget包的安裝方法
技術(shù)領(lǐng)域:
本發(fā)明涉及移動(dòng)互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種在移動(dòng)Widget應(yīng)用領(lǐng)域的移動(dòng) Widget包的安裝方法。
背景技術(shù):
Widget是一小塊可以在任意一個(gè)基于HTML的Web頁(yè)面上執(zhí)行的代碼,其可用于 實(shí)現(xiàn)如視頻、地圖、新聞、小游戲等應(yīng)用。其思想在于代碼復(fù)用,Widget的代碼可包含動(dòng)態(tài) HTML、JavaScript以及Adobe的Flash等。Widget提供了新的用戶體驗(yàn),能夠使得用戶定 制自己需要的各種服務(wù),個(gè)性化自己的用戶界面。Widget的內(nèi)容往往是通過(guò)網(wǎng)絡(luò)實(shí)時(shí)更新 的,因此用戶使用Widget能夠及時(shí)獲得其所需要的信息,或者使得Widget程序本身能夠即 時(shí)更新。移動(dòng)Widget通常運(yùn)行于瀏覽器界面之外的移動(dòng)應(yīng)用中,實(shí)現(xiàn)一些定制的應(yīng)用。運(yùn) 行移動(dòng)Widget的程序稱為移動(dòng)Widget客戶端,其構(gòu)成了執(zhí)行移動(dòng)Widget的環(huán)境,負(fù)責(zé)移 動(dòng)Widget的安裝、運(yùn)行以及與外界的通訊。移動(dòng)Widget是以移動(dòng)Widget包的形式發(fā)布的,移動(dòng)Widget客戶端在獲取移動(dòng) Widget包后需要按照一定的步驟對(duì)移動(dòng)Widget包進(jìn)行檢查并安裝到本地存儲(chǔ)上后才能運(yùn) 行。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種移動(dòng)Widget包的安裝方法。本發(fā)明的設(shè)計(jì)構(gòu)思在于移動(dòng)Widget包是壓縮文檔,其中包含了固定的目錄結(jié) 構(gòu),使得移動(dòng)Widget客戶端能夠按照預(yù)定的規(guī)則對(duì)移動(dòng)Widget包進(jìn)行安裝并執(zhí)行移動(dòng) Widget。本發(fā)明從移動(dòng)Widget包的獲取和驗(yàn)證、移動(dòng)Widget的配置處理以及移動(dòng)Widget 的啟動(dòng)方式等方面提出了移動(dòng)Widget包的具體安裝方法,從而使得移動(dòng)Widget客戶端能 夠按照移動(dòng)Widget提供者的要求對(duì)移動(dòng)Widget包進(jìn)行安裝,讓用戶能夠方便地使用移動(dòng) Widget。本發(fā)明解決技術(shù)問(wèn)題所采用的技術(shù)方案是一種移動(dòng)Widget包的安裝方法,包括如下步驟1)獲取移動(dòng)Widget包文檔,確定該文檔的類型并驗(yàn)證該包文檔格式的合法性;2)將移動(dòng)Widget包文檔解包到指定的安裝目錄;3)讀取移動(dòng)Widget的配置文件,其中包含了此移動(dòng)Widget的元信息,按照配置文 件來(lái)確定此移動(dòng)Widget各配置屬性變量的值;4)定位移動(dòng)Widget的啟動(dòng)文件,啟動(dòng)文件是移動(dòng)Widget的執(zhí)行入口。所述移動(dòng)Widget包文檔為移動(dòng)Widget客戶端所支持的一種壓縮文檔。所述獲取移動(dòng)Widget包的方法為以下兩種之一從移動(dòng)Widget客戶端本地文件 系統(tǒng)獲得;通過(guò)移動(dòng)網(wǎng)絡(luò)以數(shù)據(jù)流的形式獲得。
移動(dòng)Widget包文檔格式的合法性是指Widget包是移動(dòng)Widget客戶端能夠處理 的壓縮包。所述移動(dòng)Widget包文檔格式的合法性的驗(yàn)證方法如下對(duì)于從移動(dòng)Widget客戶端本地文件系統(tǒng)獲得的移動(dòng)Widget包,檢查其文件擴(kuò)展 名是否為移動(dòng)Widget客戶端指定的擴(kuò)展名,然后檢查其文件格式是否是Widget客戶端所 支持的壓縮文件格式;對(duì)于通過(guò)移動(dòng)網(wǎng)絡(luò)以數(shù)據(jù)流形式獲得的移動(dòng)Widget包,檢查其傳輸協(xié)議中指明 的媒體類型是否為移動(dòng)Widget客戶端能夠識(shí)別的類型,然后檢查其數(shù)據(jù)流的文件頭是否 是Widget客戶端所支持的壓縮文件頭。所述移動(dòng)Widget配置文件的讀取以及配置屬性值的確定包括如下步驟將待配置的移動(dòng)Widget的所有配置屬性變量設(shè)為默認(rèn)值;使用XML解析器讀取移動(dòng)Widget配置文件;把配置文件中包含的屬性賦給此移動(dòng)Widget對(duì)應(yīng)的配置屬性變量;將所有的配置屬性變量保存到移動(dòng)Widget客戶端中與此移動(dòng)Widget關(guān)聯(lián)的配置 數(shù)據(jù)庫(kù)中。所述移動(dòng)Widget啟動(dòng)文件的定位方法是在移動(dòng)Widget安裝目錄的根目錄中按照 指定的順序檢查是否存在指定的文件名,將第一個(gè)存在的文件作為此移動(dòng)Widget的啟動(dòng) 文件。所述移動(dòng)Widget包的安裝方法還包括查找默認(rèn)圖標(biāo)。默認(rèn)圖標(biāo)是在Widget客戶 端界面中顯示的代表此移動(dòng)Widget的圖標(biāo)。移動(dòng)Widget默認(rèn)圖標(biāo)的查找方法是在移動(dòng) Widget安裝目錄的根目錄中按照指定的順序檢查是否存在指定的文件名,將第一個(gè)存在的 文件作為此移動(dòng)Widget的默認(rèn)圖標(biāo)。本發(fā)明具有的有益效果是1)對(duì)移動(dòng)Widget包文件的格式進(jìn)行檢查確保其能夠 被正確解包。2)對(duì)移動(dòng)Widget配置文件的處理使得開(kāi)發(fā)者能夠指示移動(dòng)Widget客戶端按 其要求對(duì)移動(dòng)Widget進(jìn)行安裝。3)對(duì)移動(dòng)Widget圖標(biāo)和啟動(dòng)文件的定位使得移動(dòng)Widget 能夠被用戶方便地運(yùn)行。
圖1是本發(fā)明實(shí)施例的移動(dòng)Widget包安裝整體流程。圖2是本發(fā)明實(shí)施例的獲取移動(dòng)Widget包并驗(yàn)證合法性的流程。圖3是本發(fā)明實(shí)施例的移動(dòng)Widget配置文件的解析流程。圖4是本發(fā)明實(shí)施例的移動(dòng)Widget配置文件中“preference”和“feature”元素 的解析流程。
具體實(shí)施例方式下面,結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的具體實(shí)施方式
進(jìn)行詳細(xì)說(shuō)明。參見(jiàn)附圖1-4。本實(shí)施例的移動(dòng)Widget包的安裝方法的具體流程如下1、獲取移動(dòng)Widget包,驗(yàn)證包文檔格式合法性移動(dòng)Widget包本身是壓縮文檔,移動(dòng)Widget客戶端可以支持各種壓縮文檔格式, 如Zip或bz等。移動(dòng)Widget客戶端可以通過(guò)兩種方式來(lái)獲取要安裝的移動(dòng)Widget包,驗(yàn)
4證Widget包合法性的方式也相應(yīng)地分為兩種第一種方式是直接從移動(dòng)設(shè)備的本地文件系統(tǒng)中讀取移動(dòng)Widget包,此時(shí)移動(dòng) Widget包以獨(dú)立的文件形式存在,移動(dòng)Widget客戶端檢查首先檢查其文件擴(kuò)展名是否為 “widget”,若是則檢查其壓縮文件格式,若為移動(dòng)Widget客戶端支持的壓縮文件類型則驗(yàn) 證成功;第二種方式是通過(guò)移動(dòng)設(shè)備的網(wǎng)絡(luò)獲取,通過(guò)網(wǎng)絡(luò)獲取時(shí)要求其下層的網(wǎng)絡(luò) 協(xié)議支持附帶媒體類型標(biāo)志,如HTTP協(xié)議,移動(dòng)Widget客戶端檢查其媒體類型是否為 “application/widget”,若是則檢查其數(shù)據(jù)流的頭部信息,判斷是否是移動(dòng)Widget客戶端 支持的壓縮文件格式,若是則驗(yàn)證成功。圖2是獲取Widget包并驗(yàn)證合法性的流程。2、將移動(dòng)Widget包文檔解包到指定的安裝目錄在確認(rèn)移動(dòng)Widget包文檔是移動(dòng)Widget客戶端所支持的壓縮文檔格式后,移動(dòng) Widget客戶端調(diào)用相應(yīng)的解包方法來(lái)對(duì)此Widget包進(jìn)行解壓縮,具體解壓縮到的目錄由 移動(dòng)Widget客戶端的實(shí)現(xiàn)決定,但每個(gè)移動(dòng)Widget應(yīng)該按照Widget包內(nèi)的目錄結(jié)構(gòu)存放 到一個(gè)獨(dú)立的目錄下,此獨(dú)立目錄就作為這個(gè)移動(dòng)Widget的安裝根目錄。3、讀取移動(dòng)Widget配置文件移動(dòng)Widget的配置文件為XML文件,其中描述了此移動(dòng)Widget的元信息,移動(dòng) Widget客戶端按照配置文件的描述來(lái)實(shí)施移動(dòng)Widget的安裝和運(yùn)行;讀取配置文件的步 驟包括給移動(dòng)Widget配置參數(shù)設(shè)置默認(rèn)值,解析XML文件,驗(yàn)證配置文件有效性,按照配 置文件設(shè)置移動(dòng)Widget對(duì)應(yīng)配置屬性的值,表1是移動(dòng)Widget配置屬性的說(shuō)明列表,最后 將這些值保存到相關(guān)的配置數(shù)據(jù)庫(kù)中。包含如下步驟[1]將當(dāng)前的移動(dòng)Widget配置屬性變量的所有值都設(shè)為空值(null),然后將其 Φ^ start file encoding "UTF-8", start file content—type “text/html,,。 這些預(yù)設(shè)的值作為配置屬性的默認(rèn)值,若之后解析的配置文件中不包含其中的某些配置屬 性,則這些配置屬性將沿用這里預(yù)設(shè)的默認(rèn)值。[2]移動(dòng)Widget的配置文件要求是移動(dòng)Widget安裝根目錄下的config. xml,若 此文件不存在,則向用戶報(bào)錯(cuò),若存在則將widget config doc配置屬性變量設(shè)為此文件, 然后使用XML解析器讀取此文件。[3]讀取配置文件中的各配置項(xiàng),下文中的配置屬性變量指待設(shè)置的當(dāng)前移動(dòng) Widget配置屬性變量,“XX”元素的內(nèi)容指配置文件中“XX”元素內(nèi)的字符串文本,“XX”屬 性指配置文件中某元素的屬性,按照以下規(guī)則進(jìn)行,以下步驟中同一 XML元素下的子元素 順序無(wú)關(guān),可以任意順序出現(xiàn),下面僅按照某一順序說(shuō)明,圖3是相應(yīng)的流程a)若XML文檔的根元素不是“widget”,則結(jié)束移動(dòng)Widget的安裝,向用戶報(bào)錯(cuò)。b)對(duì)于根元素“widget”,執(zhí)行以下步驟i.若包含“id”屬性,且“id”屬性符合RFC3987中定義的標(biāo)識(shí)符格式,則將widget id配置屬性變量的值設(shè)為“id”屬性的值。ii.若包含“version”屬性,且“version”屬性不是空字符串,則將widget version配置屬性變量設(shè)為“version”屬性的值。iii.若包含“height”屬性,且是非負(fù)整數(shù),則將widget height配置屬性變量設(shè)
5為“height”屬性的值。iv.若包含“width”屬性,且是非負(fù)整數(shù),則將widget width配置屬性變量設(shè)為 “width”屬性的值。c)若根元素“widget”包含“name”元素,則將widget name配置屬性變量設(shè)為 “name”元素的內(nèi)容。若“name”元素包含“short”屬性,則將widget short name配置屬性 變量設(shè)為“short”屬性的值。d)若根元素 “widget” 包含 “description” 元素,則將 widget description 配置 屬性變量設(shè)為“description”元素的內(nèi)容。e)若根元素“Widget”包含“l(fā)icense”元素,則將widget license配置屬性變量 設(shè)為此元素的內(nèi)容,若此元素包含“href”屬性,檢查“href”屬性的值是否是合法的URI,若 是則將widget license href配置屬性變量設(shè)為此屬性的值。f)若根元素“widget”包含一個(gè)或多個(gè)“icon”元素,對(duì)每一個(gè)“icon”元素檢查其 是否包含“src”屬性,若不包含則忽略此元素。若包含“src”屬性,檢查其值是否為合法的 圖標(biāo)文件路徑,即此路徑對(duì)應(yīng)的圖標(biāo)能否被移動(dòng)Widget客戶端所顯示,若合法則將路徑加 入icons配置屬性變量。g)若根元素“widget”包含“author”元素,則執(zhí)行以下步驟i.若“author”元素包含“name”屬性,則將author name配置屬性變量設(shè)為“name”
屬性的值。ii.若“author”元素包含“href”屬性,且是合法的URL,則將author href配置 屬性變量設(shè)為“href”屬性的值。iii.若“author”元素包含“email”屬性,則將author email配置屬性變量設(shè)為 “email”屬性的值。h)根元素“widget”可包含一個(gè)或多個(gè)“preference”元素,這些元素可用于向移 動(dòng)Widget應(yīng)用傳遞運(yùn)行時(shí)的參數(shù)。若根元素“widget”包含一個(gè)或多個(gè)“preference”元 素,則對(duì)于每一元素執(zhí)行以下步驟i.若“preference”元素不包含“name”屬性或“name”屬性的值為空字符串,則忽 略此“preference”元素而繼續(xù)處理下一元素。ii.若“preference”元素包含“name”屬性,且其值不是空字符串則將“name”屬 性的值保存到臨時(shí)變量name中,讀取“preference”元素的“value”屬性并保存到臨時(shí)變 量value中οiii.若“preference”元素包含“readonly”屬性且其值為“true”,則將臨時(shí)變量 readonly @為 true,否貝Ijj^為 false。iv.將臨時(shí)變量 name、value 禾口 readonly 組成的記錄力口入 widget preferences E 置屬性變量。i)根元素“widget”可包含一個(gè)“content”元素,此元素指明當(dāng)前移動(dòng)Widget的 啟動(dòng)文件,若移動(dòng)Widget元素包含“content”元素,則執(zhí)行以下步驟i.若“content”元素不包含“src”屬性或“src”屬性為空,則忽略此元素,否則將 widget start file配置屬性變量設(shè)為“src”屬性的值指向的文件。ii.若 “content” 元素包含 “type” 屬性,將 start file content-type 配置屬性
6變量設(shè)為“type”屬性的值。iii.若“content”元素包含“encoding”屬性,將 start file encoding 配置屬性 變量設(shè)為“encoding”屬性的值。j)根元素“widget”可包含一個(gè)或多個(gè)“feature”元素,每個(gè)“feature”元素 指明當(dāng)前的移動(dòng)Widget在運(yùn)行時(shí)可能需要用到的額外功能,如應(yīng)用程序編程接口 API或 視頻解碼器等部件,移動(dòng)Widget客戶端需要確定其是否支持移動(dòng)Widget所提出的所有 "feature", Widget客戶端的安全策略也決定了是否繼續(xù)安裝提出某些“feature”要求的 移動(dòng)Widget包;對(duì)于每一個(gè)“feature”元素,執(zhí)行一下步驟i.若此“feature”元素包含“name”屬性且此屬性的值不是空字符串,則將臨時(shí)變 量name設(shè)為“name”屬性的值,否則忽略此“feature”元素而繼續(xù)處理下一元素。i i.若此“ feature ”元素包含“required”屬性且其值為“ true ”則將臨時(shí)變量 required設(shè)為true,否則將臨時(shí)變量required設(shè)為false。iii. “feature”元素可包含零個(gè)、一個(gè)或多個(gè)“param”元素,用于指明其與當(dāng)前要 求功能相關(guān)的參數(shù),不同的“feature”元素要求的參數(shù)不同,其由不同的“feature”元素決 定,對(duì)于每一 “param”元素若其不包含“name”屬性、“name”屬性的值為空字符串或不包 含“value”屬性,則忽略此元素,否則將臨時(shí)變量paramname設(shè)為“name”屬性的值,將臨時(shí) 變量param value設(shè)為“value”屬性的值,并將這兩個(gè)變量與臨時(shí)變量param關(guān)聯(lián),將臨時(shí) 變量param加入到臨時(shí)變量param list中。 iv.若移動(dòng)Widget客戶端不支持臨時(shí)變量name指明的功能,且臨時(shí)變量 required的值為true,則說(shuō)明正在安裝的移動(dòng)Widget必需某個(gè)功能才能正常運(yùn)行,然而移 動(dòng)Widget客戶端并不支持,因此停止安裝,向用戶報(bào)錯(cuò)。若移動(dòng)Widget客戶端不支持臨時(shí) 變量name指明的功能,但臨時(shí)變量required為false,則忽略此“feature”元素而繼續(xù)處
理下一元素。v.將臨時(shí)變量name、required、param list組成的記錄加入feature list配置 屬性變量。[4]將所有配置屬性變量存入與此移動(dòng)Widget相關(guān)的配置存儲(chǔ)數(shù)據(jù)庫(kù),此數(shù)據(jù)庫(kù) 由移動(dòng)Widget客戶端實(shí)現(xiàn),通??墒褂矛F(xiàn)有的小型數(shù)據(jù)庫(kù)如Sqlite以鍵值對(duì)的方式存儲(chǔ)。4、定位移動(dòng)Widget啟動(dòng)文件啟動(dòng)頁(yè)面是移動(dòng)Widget運(yùn)行時(shí)首先加載的文件。移動(dòng)Widget客戶端首先檢查配 置文件是否指定了啟動(dòng)文件,即檢查widget start file配置屬性變量是否不是皿11,若為 null 貝U按照 index, htm、index, html>index. svg>index, xhtml>index, xht 的順序檢查移云力 Widget包中是否包含了這其中的一個(gè)文件,并將第一個(gè)找到的文件作為移動(dòng)Widget的啟 動(dòng)文件,并將widget start file配置屬性變量設(shè)為第一個(gè)文件,此時(shí)需要更新移動(dòng)Widget 的配置存儲(chǔ)數(shù)據(jù)庫(kù),以反映新的widget start file配置屬性變量的值。5、定位默認(rèn)圖標(biāo)默認(rèn)圖標(biāo)是在Widget客戶端界面中顯示的代表此移動(dòng)Widget的圖標(biāo),用于幫助 用戶分辨不同的移動(dòng)Widget。移動(dòng)Widget客戶端首先檢查配置文件是否指定了圖標(biāo),即檢 查icons配置屬性變量是否不是null,若為null則移動(dòng)Widget客戶端在移動(dòng)Widget安裝 根目錄中按照 icon. svg、icon. ico、inco. png、icon. gif>icon. jpg 的順序檢查移動(dòng) Widget包中是否包含了這其中的文件,將存在的文件都加入到圖標(biāo)列表中,并將第一個(gè)存在的文 件作為Widget的默認(rèn)圖標(biāo)。以下舉例說(shuō)明本發(fā)明中描述的Widget包安裝方法的具體流程。舉例中的移動(dòng)設(shè) 備為智能手機(jī)。首先,用戶在手機(jī)中的Web瀏覽器上點(diǎn)擊一個(gè)指向移動(dòng)Widget包的鏈接,其指向 http://www. example, org/my. widget, Web瀏覽器并沒(méi)有將Widget包直接下載,而是將其 鏈接的URL發(fā)送給移動(dòng)Widget客戶端程序。移動(dòng)Widget客戶端在得到URL后,發(fā)送HTTP請(qǐng)求,以下載此移動(dòng)Widget包,移動(dòng) Widget客戶端發(fā)送的HTTP請(qǐng)求如下GET/my. widget HTTP/1. 1Host :www. example, orgAccept application/widgetwww. example, org的服務(wù)器將返回的HTTP響應(yīng)如下HTTP/1. 12000KDate :Tue,07 Sep 2010 04:54:38GMTLast-Modified :Fri,03 Sep 2010 06:47:19 GMTContent-Length : 1342Content-Type application/widget由于這是通過(guò)網(wǎng)絡(luò)獲得的,移動(dòng)Widget客戶端在得到HTTP響應(yīng)后驗(yàn)證其中的 Content-Type為application/widget,從而接收響應(yīng)的數(shù)據(jù)流。然后移動(dòng)Widget客戶端判斷接收的數(shù)據(jù)流的前四字節(jié)的數(shù)據(jù)為504B 0304,認(rèn)為 其是以Zip方式壓縮的壓縮包,調(diào)用Zip解壓模塊將數(shù)據(jù)流的內(nèi)容解壓到移動(dòng)Widget客戶 端預(yù)設(shè)的安裝位置“/widget/packages/my”中,這就是此移動(dòng)Widget包的安裝根目錄,這 里的“my”目錄是新建的目錄,根據(jù)請(qǐng)求的移動(dòng)Widget包文件名稱創(chuàng)建,假設(shè)解壓后安裝根 目錄下包含兩個(gè)文件,分別為index, html和config. xml,還包含一個(gè)icons文件夾,icons 文件夾中又包含兩個(gè)文件,分別為iconl. png和iCon2. png,目錄結(jié)構(gòu)如下所示/widget/packages/myI ---index, htmlI---config. xmlI——iconsI---iconl. pngI——icon2. png其中的config. xml,就是此移動(dòng)Widget的配置文件,由于不需要前后搜索XML中
的內(nèi)容,只需要順序解析XML,因此使用標(biāo)準(zhǔn)的SAX Parser作為XML解析器來(lái)解析config. xml ο假設(shè)config. xml中的內(nèi)容如下< ? xml version = " 1.0〃 encoding = " UTF-8" ? ><widget id = " http://example.org/myWidget"version = " 2. OBeta〃height = " 200〃
width=" 200〃 >〈name short=" My Widget !‘‘ >My Widget 2. 0 Beta</name>〈feature name=" http://example.org/camera" ><param name = " autofocus" value = " true" /></feature>〈preference name=" apikey"value=" ea31ad3a23fd2f"readonly = " true" /><description>我的移動(dòng)Widget</description)<author name = "The Author,,href = " http://author.example.org/"email = " authoriexample. org" /><icon src = " icons/iconl. png" /><icon src = " icons/icon2. png" />〈license〉My License.〈/license〉</widget>在處理配置文件前,已經(jīng)將配置屬性變量的所有值都設(shè)為默認(rèn)值,且widget
config doc 為"config. xml,,。處理以上config. xml文檔時(shí)首先判斷其根元素確實(shí)為“widget”,且包含了“id”、 “versioWheight”和“width”四個(gè)屬性,且“id”屬性符合標(biāo)識(shí)符格式要求,因此widget id配置屬性變量被設(shè)為“http://example. org/myWidget”,widget version配置屬性變量 被設(shè)為“2. OBeta”,widget height和widget width兩個(gè)配置屬性變量均被設(shè)為“200”。根元素下包含了 “name”元素,widget name配置屬性變量被設(shè)為其元素內(nèi)容“My Widget 2.0 Beta”,而 “name” 元素又包含了 “ short” 屬性,widget short name 配置屬性 變量被設(shè)為“My Widget ! ”。根元素下包含了 一個(gè)“ feature ”元素,其包含了 “name ”屬性,而且包括一個(gè)參數(shù), 將name為“autofocus”、value為“true”的參數(shù)加入param list中,然后設(shè)臨時(shí)變量name % "http://example, org/camera", 時(shí)變量 required 為 false, ^HfI^;時(shí)變量 name、param list和requrired組成的記錄加入feature list配置屬性變量。根元素下包含了一個(gè)“preference”元素,將臨時(shí)變量name設(shè)為“apikey”,臨時(shí)變 量value設(shè)為“ea31ad3a23fd2f”,臨時(shí)變量readonly設(shè)為“true”,將這三個(gè)臨時(shí)變量組成 的記錄加入widget preferences配置屬性變量中。根元素下包含“description”元素,將widget description配置屬性變量設(shè)為“我的移動(dòng)Widget”。根元素下包含“author”元素,將author name配置屬性變量設(shè)為“The Author”, 將 author href 配置屬性變量設(shè)為"http//author, example, org”,將 author email 配置 屬性變量設(shè)為"authoriexample. org,,。根元素下包含兩個(gè)“icon”元素,將“icons/iconl.png” 和“icons/icon2. png” 依 次加入icons配置屬性變量。根元素下包含“l(fā)icense”元素,將widget license配置屬性變量設(shè)為 “MyLicense”,而由于其不包含“href”屬性,因此widget license href配置屬性變量仍然 將保持預(yù)設(shè)的默認(rèn)值null。至此根元素下已經(jīng)不包含其他信息了,因此配置文件的解析完成。表2給出了解 析完成后各配置屬性變量的值。之后移動(dòng)Widget客戶端將使用Sqlite數(shù)據(jù)庫(kù)把這些變量 的值保存起來(lái),移動(dòng)Widget程序在運(yùn)行時(shí)可以查詢從而獲取這些變量的值。由于此時(shí)widget start file配置屬性變量的值為null,移動(dòng)Widget客戶端首先 檢查移動(dòng)Widget安裝根目錄中是否包含index, htm,不存在此文件繼續(xù)檢查index, html, 發(fā)現(xiàn)存在此文件,因此將widget start file配置屬性變量的值更新為“index, html”,并且 更新Sqlite數(shù)據(jù)庫(kù)中相應(yīng)的內(nèi)容。由于此時(shí)icons配置屬性變量不是null,因此移動(dòng)Widget客戶端不再繼續(xù)查找默 認(rèn)圖標(biāo),而將icons中第一個(gè)“icons/iconl.png”作為默認(rèn)圖標(biāo)。此移動(dòng)Widget包的安裝已經(jīng)完成,用戶可以通過(guò)點(diǎn)擊移動(dòng)Widget客戶端界面上 此移動(dòng)Widget的默認(rèn)圖標(biāo)來(lái)啟動(dòng)此移動(dòng)Widget。表1移動(dòng)Widget包配置屬性變量列表
10
權(quán)利要求
一種移動(dòng)Widget包的安裝方法,其特征在于,包括1)獲取移動(dòng)Widget包文檔,確定該文檔的類型并驗(yàn)證該包文檔格式的合法性;所述移動(dòng)Widget包文檔為移動(dòng)Widget客戶端所支持的一種壓縮文檔;2)將移動(dòng)Widget包文檔解包到指定的安裝目錄;3)讀取移動(dòng)Widget的配置文件,按照配置文件來(lái)確定此移動(dòng)Widget各配置屬性變量的值;所述配置文件包含了此移動(dòng)Widget的元信息;4)定位移動(dòng)Widget的啟動(dòng)文件,啟動(dòng)文件是移動(dòng)Widget的執(zhí)行入口。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,獲取移動(dòng)Widget包的方法為以下兩種之1)從移動(dòng)Widget客戶端本地文件系統(tǒng)獲得;2)通過(guò)移動(dòng)網(wǎng)絡(luò)以數(shù)據(jù)流的形式獲得。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,移動(dòng)Widget包文檔格式的合法性的驗(yàn)證 方法如下1)對(duì)于從移動(dòng)Widget客戶端本地文件系統(tǒng)獲得的移動(dòng)Widget包,檢查其文件擴(kuò)展名 是否為移動(dòng)Widget客戶端指定的擴(kuò)展名,然后檢查其文件格式是否是Widget客戶端所支 持的壓縮文件格式;2)對(duì)于通過(guò)移動(dòng)網(wǎng)絡(luò)以數(shù)據(jù)流形式獲得的移動(dòng)Widget包,檢查其傳輸協(xié)議中指明的 媒體類型是否為移動(dòng)Widget客戶端能夠識(shí)別的類型,然后檢查其數(shù)據(jù)流的文件頭是否是 Widget客戶端所支持的壓縮文件頭。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,移動(dòng)Widget配置文件的讀取以及配置屬 性值的確定包括如下步驟1)將待配置的移動(dòng)Widget的所有配置屬性變量設(shè)為默認(rèn)值;2)使用XML解析器讀取移動(dòng)Widget配置文件;3)把配置文件中包含的屬性賦給此移動(dòng)Widget對(duì)應(yīng)的配置屬性變量;4)將所有的配置屬性變量保存到移動(dòng)Widget客戶端中與此移動(dòng)Widget關(guān)聯(lián)的配置數(shù) 據(jù)庫(kù)中。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,移動(dòng)Widget啟動(dòng)文件的定位方法是在移 動(dòng)Widget安裝目錄的根目錄中按照指定的順序檢查是否存在指定的文件名,將第一個(gè)存 在的文件作為此移動(dòng)Widget的啟動(dòng)文件。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括查找默認(rèn)圖標(biāo);默認(rèn)圖標(biāo)是在 Widget客戶端界面中顯示的代表此移動(dòng)Widget的圖標(biāo);移動(dòng)Widget默認(rèn)圖標(biāo)的查找方法 是在移動(dòng)Widget安裝目錄的根目錄中按照指定的順序檢查是否存在指定的文件名,將第 一個(gè)存在的文件作為此移動(dòng)Widget的默認(rèn)圖標(biāo)。
全文摘要
本發(fā)明公開(kāi)了一種移動(dòng)Widget包的安裝方法,它包括如下步驟1)獲取移動(dòng)Widget包文檔,確定該文檔的類型并驗(yàn)證該包文檔格式的合法性;2)將移動(dòng)Widget包文檔解包到指定的安裝目錄;3)讀取移動(dòng)Widget的配置文件,按照配置文件來(lái)確定此移動(dòng)Widget各配置屬性變量的值;所述配置文件包含了此移動(dòng)Widget的元信息;4)定位移動(dòng)Widget的啟動(dòng)文件,該啟動(dòng)文件是移動(dòng)Widget的執(zhí)行入口。本發(fā)明有助于提高移動(dòng)Widget安裝和運(yùn)行的便利性。
文檔編號(hào)G06F9/445GK101957768SQ20101029059
公開(kāi)日2011年1月26日 申請(qǐng)日期2010年9月25日 優(yōu)先權(quán)日2010年9月25日
發(fā)明者俞立呈, 吳明暉, 樓學(xué)慶, 陳天洲, 顏暉 申請(qǐng)人:浙江大學(xué)