王運(yùn)生 聶芬
摘要:目前,Andriod智能手機(jī)平臺(tái)已經(jīng)成為人們獲取信息的重要方式之一,但在使用過程中,經(jīng)常遇到在手機(jī)平臺(tái)上登陸某個(gè)網(wǎng)址需要輸入較復(fù)雜的URL地址,造成使用不便。WebView是Andriod平臺(tái)基于WebKit引擎的瀏覽器組件,用來顯示網(wǎng)頁(yè)或者顯示應(yīng)用的在線內(nèi)容。基于WebView可以快速開發(fā)瀏覽器的上層應(yīng)用,響應(yīng)網(wǎng)頁(yè)的加載和腳本的交互。本文將介紹使用Webview組件將固定網(wǎng)址封裝成一個(gè)Andriod程序的方法。
關(guān)鍵詞:Andriod; Webview組件; 網(wǎng)頁(yè); 封裝
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):2095-2163(2013)06-0104-03
0引言
Android手機(jī)平臺(tái)是美國(guó)Google公司開發(fā)的基于Linux平臺(tái)的開源智能手機(jī)操作系統(tǒng),內(nèi)含操作系統(tǒng)、中間件和應(yīng)用程序,由于源代碼開放,該系統(tǒng)可以移植到不同的硬件平臺(tái)上,目前已被國(guó)內(nèi)外手機(jī)制造商廣泛采用[1]。
WebView是Android平臺(tái)上一個(gè)能夠加載顯示網(wǎng)頁(yè)的組件,是一個(gè)瀏覽器控件,通過這個(gè)控件可以直接訪問網(wǎng)頁(yè),或者把輸入的HTML字符串顯示出來,功能較為強(qiáng)大,并主要表現(xiàn)為如下五個(gè)優(yōu)點(diǎn)[2]:
(1)功能強(qiáng)大,支持CSS,Java?script等HTML語言,使得頁(yè)面更加漂亮;
(2)能夠?qū)g覽器控件進(jìn)行非常詳細(xì)的設(shè)置,比如字體大小,背景色,滾動(dòng)條樣式等;
(3)能夠捕捉到所有瀏覽器操作,比如點(diǎn)擊URL,打開或關(guān)閉URL;
(4)能夠很好地融入布局;
(5)甚至,webView還能和JS進(jìn)行交互。
1 Webview組件主要內(nèi)容
使用Webview組件在Android平臺(tái)上加載顯示網(wǎng)頁(yè),首先要在manifest.main文件中創(chuàng)建一個(gè)Webview,然后在activity中定義Webview,主要內(nèi)容如下[3]:
(1)添加權(quán)限:AndroidManifest.xml中必須使用許可“android.permission.INTERNET”,否則會(huì)出現(xiàn)Web page not available錯(cuò)誤;
(2)要在Activity中生成一個(gè)WebView組件:WebView webView = new WebView(this);
(3)如果WebView中需要用戶手動(dòng)輸入用戶名、密碼或其他,則Webview必須設(shè)置支持獲取手勢(shì)焦點(diǎn):Webview.requestFocusFromTouch();
(4)如果訪問的頁(yè)面中有Javascript,則Webview必須設(shè)置支持Javascript,否則顯示空白頁(yè)面。Java代碼:Webview.getSettings().setJavaScriptEnabled(true);
(5)WebView 加載界面主要調(diào)用“LoadUrl”方法,可直接加載網(wǎng)頁(yè)、圖片并顯示;
(6)如果頁(yè)面中存在鏈接,而點(diǎn)擊鏈接卻要求繼續(xù)在當(dāng)前browser中響應(yīng),而不是在新開Android系統(tǒng)的browser中響應(yīng)該鏈接,則必須覆蓋Webview的WebViewClient對(duì)象。Java代碼如下:
(7) 如果不做任何處理,在顯示用戶的Brower UI時(shí),點(diǎn)擊系統(tǒng)“Back”鍵,整個(gè)Browser會(huì)作為一個(gè)整體回退(“Back”)到其他Activity中,而不是在Browser的歷史頁(yè)面中實(shí)現(xiàn)回退(“Back”)。如果需要在歷史頁(yè)面中實(shí)現(xiàn)Back,則要在當(dāng)前Activity中處理并消費(fèi)掉該Back事件。相應(yīng)的Java代碼如下:
2實(shí)現(xiàn)Webview的兩種方法
2.1在Activity中實(shí)例化WebView組件
首先,該方法要在Activity中實(shí)例化WebView組件[5]:
WebView webView = new WebView(this);
其次,要調(diào)用WebView的loadUrl()方法,設(shè)置WevView將顯示的網(wǎng)頁(yè),本文以要訪問“山西水利職業(yè)技術(shù)學(xué)院全國(guó)計(jì)算機(jī)等級(jí)考試成績(jī)查詢”為例,URL地址為:http://60.222.229.72:94/cjcx/index.asp,則調(diào)用WebView的loadUrl()方法語句為:
webView.loadUrl("http://60.222.229.72:94/cjcx/index.asp");
最后,調(diào)用Activity的setContentView( )方法來顯示網(wǎng)頁(yè)視圖,在計(jì)算機(jī)上訪問該網(wǎng)頁(yè),如圖1所示。
經(jīng)調(diào)試,該方法在Andriod模擬平臺(tái)上可以正常打開網(wǎng)頁(yè),效果如圖2所示。
經(jīng)調(diào)試,同樣可以得到圖1的結(jié)果,最后,在eclipse[7]環(huán)境下,將源代碼打包生成Andriod平臺(tái)的APK安裝文件,而在Andriod手機(jī)平臺(tái)安裝完成后即可付諸使用,具體如圖3所示。
3結(jié)束語
上述兩種方法,均可實(shí)現(xiàn)將復(fù)雜的網(wǎng)頁(yè)URL地址封裝成一個(gè)Andriod程序,從而進(jìn)行快速瀏覽[8],特別需要注意的是:
(1)在用WebView鏈接成功后,為了使WebView支持回退功能,需要覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退按鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,而不是回退到上一頁(yè)面。
(2)需要在AndroidManifest.xml文件中添加權(quán)限:
參考文獻(xiàn):
[1]韓超.Android經(jīng)典應(yīng)用程序開發(fā)[M].北京:電子工業(yè)出版社,2012:115-121.
[2]林城.Android 2.3應(yīng)用開發(fā)實(shí)戰(zhàn)[M]. 北京:機(jī)械工業(yè)出版社,2013:132-142.
[3]白文江.基于Android平臺(tái)的移動(dòng)應(yīng)用開發(fā)研究[J].太原:太原大學(xué)學(xué)報(bào),2011(3):117-120.
[4]張小東,李惠.基于Android的PKM平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].貴州大學(xué)學(xué)報(bào)(自然科學(xué)版),2011(6):70-74.
[5]孫偉,丁永尚, 何福男.Web Service技術(shù)在移動(dòng)平臺(tái)中的應(yīng)用[J]. 蘇州市職業(yè)大學(xué)學(xué)報(bào), 2012(9):38-41.
[6]劉彬.Web Service技術(shù)在移動(dòng)平臺(tái)中的應(yīng)用[D].廣州:中山大學(xué), 2011:32-40.
[7]姚昱旻,劉衛(wèi)國(guó).Android的架構(gòu)與應(yīng)用開發(fā)研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用, 2008,17(11):110-112.
[8]熊文闊.基于Android平臺(tái)手機(jī)圖形編輯軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京郵電大學(xué), 2011:35-39.