劉 杰
(錦州師范高等專科學校,遼寧 錦州121000)
關鍵字:Android;Intent;WebView
隨著各種智能終端用戶的增長和技術的發(fā)展,智能手機、平板電腦、智能電視等移動設備的應用范圍越來越廣,利用各類App調(diào)用網(wǎng)頁及數(shù)據(jù)傳輸成為很多用戶的需求.為解決這一問題,移動平臺提供了很多的解決方案,為各領域的工作提供了更加細分的基于不同專業(yè)化的信息內(nèi)容.Android是專為移動設備開發(fā)的平臺,應用非常廣泛,隨著技術的發(fā)展Android為實現(xiàn)不同調(diào)用網(wǎng)頁的功能提供了兩個方面的技術方案.如在App中需要跳轉(zhuǎn)到其他瀏覽器來進行網(wǎng)頁瀏覽,需要采用意圖Intent方法來實現(xiàn).Intent的方式不需要聯(lián)網(wǎng)權限,因為請求網(wǎng)絡顯示網(wǎng)頁的工作是在瀏覽器當中完成的,瀏覽器需要的權限與開發(fā)中的App無關,但在App中可以選擇打開瀏覽器的類型.Intent縮短了用戶在應用當中的時間,但會出現(xiàn)用戶調(diào)轉(zhuǎn)到瀏覽器之后不會回到App的問題.WebView方法是在自己的應用內(nèi),相當于在應用內(nèi)部嵌入了一個Mini瀏覽器.WebView方法可以直接顯示W(wǎng)eb頁面,也可以直接用Html和做布局Javascript交互調(diào)用.WebView方法調(diào)用網(wǎng)頁需要訪問網(wǎng)絡資源,因此必須在清單文件中增加語句 “Android.permission.internet”,作用是允許使用連接Internet,否則會出現(xiàn) “Web page not available”錯誤或App無法運行的后果.Android平臺的兩種技術解決方案各有優(yōu)缺點,在開發(fā)過程中需要根據(jù)需求進行判斷選擇.
Intent可以理解為不同組件通信的媒介或者信使,Android四大組件中的三種核心組件Activity、Service和Broadcast Receiver都需要使用Intent來進行激活,同時需要在清單文件中進行注冊[1].Intent的主要作用是在相同或不同的應用程序間或組件間的后期運行時進行綁定.對于不同的組件,Android系統(tǒng)通過使用不同方法提供Intent發(fā)送機制對組件進行激活.
在Intent對象中包含有Component Name(組件名)、Action (行為)、Data(數(shù)據(jù))、Category(類別)、Extra(額外)、Flags(標記)等信息.
Action是一個字符串,用來表示將要執(zhí)行的動作.
WebView組件是專門用來瀏覽網(wǎng)頁的,其使用方法既可以在XML布局文件中使用<WebView>添加標記,又可以在Java文件中通過New關鍵字創(chuàng)建[2].
添加WebView組件后,就可以用該組件提供的方法來執(zhí)行瀏覽器操作了.WebView組件提供的常用方法既可以加載指定URL對應的網(wǎng)頁,又可以將指定的字符串數(shù)據(jù)或基于URL指定的數(shù)據(jù)加載到瀏覽器中.
Android中的Intent有兩個作用:(1)用來啟動其他新的Activity;(2)作為傳遞數(shù)據(jù)和事件的橋梁.語句Android.intent.action.view用于顯示用戶的數(shù)據(jù),并會根據(jù)設置的用戶的數(shù)據(jù)類型動作打開相應的瀏覽器來代替Activity.
利用意圖Intent調(diào)用網(wǎng)頁的應用既可以調(diào)用默認瀏覽器,又可以調(diào)用其他瀏覽器.這是UC瀏覽器、Opera、QQ瀏覽器等很多開發(fā)者經(jīng)常使用的.使用App時,當觸發(fā)事件發(fā)生時就可以調(diào)用手機瀏覽器打開特定網(wǎng)頁,網(wǎng)址可以替換成需要的網(wǎng)址.
調(diào)用默認瀏覽器一般使用打開鏈接或使用WebView組件兩種方式來傳遞數(shù)據(jù).
2.1.1 打開鏈接方式
打開鏈接方式首先創(chuàng)建一個意圖對象,在意圖對象中設置標準Activity動作Action_view將數(shù)據(jù)顯示給用戶,相對應的數(shù)據(jù)為將要進行鏈接的地址,然后調(diào)用Intent中的SetClassName方法跳轉(zhuǎn)到不同Applicaiton的Activity,最后使用Intent來啟動Activity并傳遞參數(shù).如下語句所示:
Intent intent = new Intent(Intent.Action_View,ri.parse(" 此處填鏈接"));
Intent.setClassName("當前activity路徑"," 跳轉(zhuǎn)activity路徑");getContext().startActivity(intent);
2.1.2 打開本地網(wǎng)頁
Intent intent=new Intent();//創(chuàng)建一個意圖對象
intent.setAction("android.intent.action.View");//設置意圖的動作為.action.View
Uri CONTENT_URI_BROWSERS = Uri.parse("content://本地地址");//設置鏈接的地址
intent.setData(CONTENT_URI_BROWSERS);//設置意圖的數(shù)據(jù)為CONTENT_URI_BROWSERS
intent.setClassName(" 當前activity路徑"," 跳轉(zhuǎn)activity路徑");
startActivity(intent);
在Android開發(fā)中,使用WebView組件可以很方便地實現(xiàn)Web瀏覽器的功能.使用WebView不但可以更改網(wǎng)頁展現(xiàn)的內(nèi)容及樣式,還可以實現(xiàn)部分功能的跨平臺[3].WebView組件的作用是用來瀏覽網(wǎng)頁的,和其他組件一樣可以在布局文件中設置,也可以通過Java代碼調(diào)用Javascript進行創(chuàng)建.
2.2.1 在WebView中顯示打開網(wǎng)頁
要實現(xiàn)打開網(wǎng)頁時不調(diào)用系統(tǒng)瀏覽器,而是在本W(wǎng)ebView中顯示的功能,首先需要在布局文件中添加 WebView組件,并設置參數(shù),然后在應用的Activity的OnCreate()方法中獲取布局中的WebView組件,并為其指定加載的網(wǎng)頁的URL地址.使用WebView組件不僅可以順利瀏覽已有的網(wǎng)頁,還可以實現(xiàn)加載HTML代碼的功能.加載HTML代碼可以讓界面更加美觀,可以讓開發(fā)更加簡單、快捷.實現(xiàn)該功能主要用到了LoadDataWithBaseURL()方法,基本的語法格式如下:
public void loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyUrl)
2.2.2 通過Java代碼調(diào)用Javascript實現(xiàn)Web瀏覽器的功能
在默認情況下,WebView組件是不支持Javascript的運行的,但是在運行某些不得不使用Javascript代碼的網(wǎng)站時,我們需要使用語句來允許Javascript的運行,實現(xiàn)以上功能只需要兩個步驟即可[4]:
WebView userView= (WebView)findViewById(R.id.conten);//在布局文件中獲取 WebView對象
WebSettings userSettings=userView.getSettings();//通過 WebView中的getSettings方法獲得一個WebSettings對象
userSettings.setJavaScriptEnabled(true);//設 置 允許Javascript的運行
接下來就可以指定要加載的網(wǎng)頁進行瀏覽了.
2.2.3 實現(xiàn)網(wǎng)絡瀏覽器的前進、后退等功能
一個功能實用的網(wǎng)絡瀏覽器不僅需要支持Javascript,還要包含前進、后退等功能.利用WebView組件可以靈活實現(xiàn)這些功能[5].
(1)按返回鍵時,不退出程序而是返回上一瀏覽頁面:
userView.goBack();
如果在頁面中存在鏈接,點擊該鏈接在當前瀏覽器頁面中響應不打開新的瀏覽器頁面去響應該鏈接,則必須覆蓋 WebView組件中的WebViewClient對象[6].
(2)可以設置打開頁面時,網(wǎng)頁根據(jù)屏幕的尺寸自適應屏幕:
WebView userView = (WebView) findViewById(R.id.conten);
WebSettings userSettings = webView.getSettings();
userbSettings.setUseWideViewPort(true);//此 屬性的作用是可任意進行比例縮放
userSettings.setLoadWithOverviewMode(true);//自適應屏幕
(3)設置WebSettings對象屬性,使頁面支持縮放:
WebSettings對象.setBuiltInZoomControls(true);
WebSettings對象 .setSupportZoom(true);
利用Intent調(diào)用網(wǎng)頁只是Intent的其中一項功能,一般還需要配合其他組件的事件和方法.Android中的 WebView存在很大的兼容性問題,不僅僅是因為Android系統(tǒng)版本的不同對 WebView產(chǎn)生很大的差異,不同的廠商生產(chǎn)的ROM里面 WebView也存在著很大的差異,具體應用的過程中需要配合整個App的開發(fā)進行合理優(yōu)化.利用以上兩種方式都可以達到調(diào)用網(wǎng)頁的目的,可以根據(jù)實際需求在開發(fā)中進行拓展.