91亚洲精华国内精华精华液_国产高清在线精品一区不卡_精品特级一级毛片免费观看_欧美日韩中文制服有码_亚洲精品无码你懂的网站369

在 Android 手機(jī)中內(nèi)置了一款高性能 webkit 內(nèi)核瀏覽器, SDK 中封裝為一個(gè)叫做 WebView 組件。
WebView 類是 WebKit 模塊 Java 層的視圖類,( 所有需要使用 Web 瀏覽功能的Android應(yīng)用程序都要?jiǎng)?chuàng)建該視圖對(duì)象顯示和處理請(qǐng)求的網(wǎng)絡(luò)資源。目前,WebKit 模塊支持 HTTP、HTTPS、FTP 以及 javascript 請(qǐng)求。

WebView 作為應(yīng)用程序的 UI 接口,為用戶提供了一系 列的網(wǎng)頁(yè)瀏覽、用戶交互接口,客戶程序通過這些接口訪問 WebKit 核心代碼。 )

什么是 webkit
WebKit 是 Mac OS X v10.3 及以上版本所包含的軟件框架(對(duì) v10.2.7 及以上版本也可通過 軟件更新獲?。?同時(shí),
WebKit 也是 Mac OS X 的 Safari 網(wǎng)頁(yè)瀏覽器的基礎(chǔ)。WebKit 是一個(gè)開源項(xiàng)目,主要由 KDE 的 KHTML 修改而來并且包含了一些來自蘋果公司的一些組件。
傳統(tǒng)上, WebKit 包含一個(gè)網(wǎng)頁(yè)引擎 WebCore 和一個(gè)腳本引擎 JavaScriptCore,它們分別對(duì)應(yīng) 的是 KDE 的 KHTML 和 KJS。
不過,隨著 JavaScript 引擎的獨(dú)立性越來越強(qiáng),現(xiàn)在 WebKit 和 WebCore 已經(jīng)基本上混用不分(例如 Google Chrome 和 Maxthon 3 采用 V8引擎,卻仍然 宣稱自己是 WebKit 內(nèi)核) 。
這里我們初步體驗(yàn)一下在 android 是使用 webview 瀏覽網(wǎng)頁(yè),
SDK 的 Dev Guide 中有一個(gè) 在 WebView 的簡(jiǎn)單例子 。 在開發(fā)過程中應(yīng)該注意幾點(diǎn): 1.AndroidManifest.xml 中必須使用許可"android.permission.INTERNET",否則會(huì)出 Web page not available 錯(cuò)誤。

2.如果訪問的頁(yè)面中有 Javascript,則 webview 必須設(shè)置支持 Javascript。 webview.getSettings().setJavaScriptEnabled(true);
3.如果頁(yè)面中鏈接, 如果希望點(diǎn)擊鏈接繼續(xù)在當(dāng)前 browser 中響應(yīng), 而不是新開 Android 的系統(tǒng)browser 中響應(yīng)該鏈接,必須覆蓋 webview 的 WebViewClient 對(duì)象。

mWebView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); 

mWebView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); 


4.如果不做任何處理,瀏覽網(wǎng)頁(yè),點(diǎn)擊系統(tǒng)“Back”鍵,整個(gè) Browser 會(huì)調(diào)用 finish()而結(jié)束自身,
  如果希望瀏覽的網(wǎng) 頁(yè)回退而不是推出瀏覽器,需要在當(dāng)前 Activity 中處理并消費(fèi) 掉該 Back 事件。

public boolean onKeyDown(int keyCode, KeyEvent event){        <br> if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
                mWebView.goBack();
                 return true;
        }
        return super.onKeyDown(keyCode, event);
}

 ==========================================================================
在tomcat上放一個(gè)漂亮頁(yè)面

1.加載網(wǎng)頁(yè)(加權(quán)限)
定義一個(gè)網(wǎng)址輸入文本框,點(diǎn)按鈕用webView打開這個(gè)網(wǎng)頁(yè)
2.編寫data字符串,webview.loadData(data,"text/html","UTF-8");
3.用dialog的setiem打開網(wǎng)址,前進(jìn),后退,放大,縮小,清歷史。
4.用HTML定義開發(fā)界面。file:/android_asset/a.html

復(fù)制代碼

<script>
 function loadurl(){        }< /script>
< select name="">
  <option value=""/>
  <option value=""/>
< /select>webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.loadUrl(file:///...);

復(fù)制代碼


5.js對(duì)話框(用chom..)

復(fù)制代碼

function openAlert(){
  window.alert("");
}

function openConfirm(){  if(window.confirm("是否刪除此信息?")){
          window.location="myjs.html";//-------------------!!!  }
}<input type="submit" value="警告" onClick="openAlert()">
< input type="submit" value="確認(rèn)" onClick="openConfirm()">

復(fù)制代碼

-----------------------------------------------------
java調(diào)js中的方法:
//在java中調(diào)用javascript方法要通過loadUrl()來進(jìn)行,把要調(diào)用的方法作為loadUrl方法的字符串參數(shù)

settings.setJavaScriptEnabled(true);//設(shè)置在webview中可用js
 webview.loadUrl("javascript:myprompt1()");

javascript中調(diào)java中的方法:(特別強(qiáng)調(diào)要用Android2.2版模擬器)

-------------java中:------

復(fù)制代碼

webview.addJavascriptInterface(new MyInterface(), "myobj");//第二步---注冊(cè)在js中調(diào)用的對(duì)象名myobj         
         webview.loadUrl("file:///android_asset/test.html");
 //第一步:定義要在js中調(diào)用的方法
    class MyInterface{
                   public String getname(){
                            return "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            }
    }

復(fù)制代碼

------------javascript中:-----

function myinterface(){
                 document.getElementById("myname").innerHTML = window.myobj.getname() ;
         }

------------------------------------------------------------------
WebView控件功能強(qiáng)大,除了具有一般View的屬性和設(shè)置外,還可以對(duì)url請(qǐng)求、頁(yè)面加載、渲染、頁(yè)面交互進(jìn)行強(qiáng)大的處理。
WebView有幾個(gè)可以定制的點(diǎn):
(1) 設(shè)置WebChromeClient子類,WebChromeClient會(huì)在一些影響瀏覽器ui交互動(dòng)作發(fā)生時(shí)被調(diào)用,比如WebView關(guān)閉和隱藏、 頁(yè)面加載進(jìn)展、js確認(rèn)框和警告框、js加載前、js操作超時(shí)、webView獲得焦點(diǎn)等等,詳見WebChromeClient

(2) 設(shè)置WebViewClient子類,WebViewClient會(huì)在一些影響內(nèi)容喧嚷的動(dòng)作發(fā)生時(shí)被調(diào)用,比如表單的錯(cuò)誤提交需要重新提交、頁(yè)面開始加 載及加載完成、資源加載中、接收到http認(rèn)證需要處理、頁(yè)面鍵盤響應(yīng)、頁(yè)面中的url打開處理等等,詳見WebViewClient

(3) 設(shè)置WebSettings類,其中包含多項(xiàng)配置。WebSettings用來對(duì)WebView的配置進(jìn)行配置和管理,比如是否可以進(jìn)行文件操作、緩存的 設(shè)置、頁(yè)面是否支持放大和縮小、是否允許使用數(shù)據(jù)庫(kù)api、字體及文字編碼設(shè)置、是否允許js腳本運(yùn)行、是否允許圖片自動(dòng)加載、是否允許數(shù)據(jù)及密碼保存等 等,詳見WebSettings

(4)設(shè)置addJavascriptInterface方法,將java對(duì)象綁定到webView中, 以方便從頁(yè)面js中控制java對(duì)象, 實(shí)現(xiàn)用本地java代碼和html頁(yè)面進(jìn)行交互,甚至可以進(jìn)行頁(yè)面自動(dòng)化。但如此做存在安全隱患,所以若設(shè)置了此方法,請(qǐng)確保webView的代碼都是自 己完成,詳細(xì)使用addJavascriptInterface進(jìn)行自動(dòng)化見本文5使用addJavascriptInterface完成和js交互

1、back鍵控制網(wǎng)頁(yè)后退
Activity默認(rèn)的back鍵處理為結(jié)束當(dāng)前Activity,webView查看了很多網(wǎng)頁(yè)后,希望按back鍵返回上一次瀏覽的頁(yè)面,這個(gè)時(shí)候我們就需要覆蓋onKeyDown函數(shù),告訴他如何處理,如下:

復(fù)制代碼

public  boolean onKeyDown(int keyCode, KeyEvent event) {  
         if (webView.canGoBack() && event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {  
             webView.goBack();  
             return    true;  
         }  
         return    super.onKeyDown(keyCode, event);  
     }  
 

復(fù)制代碼

其中webView.canGoBack()在webView含有一個(gè)可后退的瀏覽記錄時(shí)返回true
webView.goBack();表示返回webView的上次訪問頁(yè)面
WebView(網(wǎng)絡(luò)視圖)能加載顯示網(wǎng)頁(yè),可以將其視為一個(gè)瀏覽器。

網(wǎng)絡(luò)內(nèi)容:
1、LoadUrl直接顯示網(wǎng)頁(yè)內(nèi)容(單獨(dú)顯示網(wǎng)絡(luò)圖片)

2、LoadData顯示中文網(wǎng)頁(yè)內(nèi)容(含空格的處理)

APK包內(nèi)文件:
1、LoadUrl顯示APK中Html和圖片文件

2、LoadData(loadDataWithBaseURL)顯示APK中圖片和文字混合的Html內(nèi)容res/layout/main.xml
----------------------------------------------------------
當(dāng)運(yùn)行提示為web page not available時(shí)去清單文件中添加權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>
URLUtil.isNetworkUrl(String uri)方法用來判斷用戶輸入的URL是否有效,如無效則會(huì)顯示一個(gè)Toast信息框來提醒用戶輸入正確的URL

----------------------------------------------------------
步驟:
1、在布局文件中聲明WebView
2、在Activity中實(shí)例化WebView
3、調(diào)用WebView的loadUrl( )方法,設(shè)置WevView要顯示的網(wǎng)頁(yè)
4、為了讓W(xué)ebView能夠響應(yīng)超鏈接功能,調(diào)用setWebViewClient( )方法,設(shè)置  WebView視圖
5、用WebView點(diǎn)鏈接看了很多頁(yè)以后為了讓W(xué)ebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,而不是回退到上一頁(yè)面
6、需要在AndroidManifest.xml文件中添加權(quán)限,否則出現(xiàn)Web page not available錯(cuò)誤。

<uses-permission android:name="android.permission.INTERNET"/>
下面是具體的例子:

MainActivity.java

View Code

main.xml

View Code

=======================================================
webview學(xué)習(xí)記錄總結(jié):

首先要在 manifest.main 文件中創(chuàng)建一個(gè) webview,
然后再 activity 中定義這個(gè) webview 然后 進(jìn)行以下相關(guān)操作。
1、添加權(quán)限:AndroidManifest.xml 中必須使用許可"android.permission.INTERNET",否則會(huì)出 Web page not available 錯(cuò)誤。
2、在要Activity 中生成一個(gè) WebView 組件:WebView webView = new WebView(this);
3、設(shè)置WebView 基本信息:
如果訪問的頁(yè)面中有 Javascript,則 webview 必須設(shè)置支持 Javascript。
webview.getSettings().setJavaScriptEnabled(true);
觸摸焦點(diǎn)起作用 requestFocus(); 取消滾動(dòng)條 this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4 如果希望點(diǎn)擊鏈接由自己處理,而不是新開 Android 的系統(tǒng) browser 中響應(yīng)該鏈接。
給 WebView添加一個(gè)事件監(jiān)聽對(duì)象( WebViewClient)并重寫其中的一些方法:
shouldOverrideUrlLoading:對(duì)網(wǎng)頁(yè)中超鏈接按鈕的響應(yīng)。當(dāng)按下某個(gè)連接時(shí) WebViewClient會(huì)調(diào)用這個(gè)方法,
并傳遞參數(shù):按下的 url onLoadResource onPageStart onPageFinish onReceiveError onReceivedHttpAuthRequest

5、如果訪問的頁(yè)面中有 Javascript,則 webview 必須設(shè)置支持 Javascript ,否則顯示空白頁(yè)面。
Java 代碼 webview.getSettings().setJavaScriptEnabled(true);

6、 如果頁(yè)面中鏈接,如果希望點(diǎn)擊鏈接繼續(xù)在當(dāng)前 browser 中響應(yīng),而不是新開 Android 的系統(tǒng) browser 中響應(yīng)該鏈接,必須覆蓋 webview 的 WebViewClient 對(duì)象: Java 代碼 1.mWebView.setWebViewClient(new WebViewClient(){ 2. 3. 4. 5. 6. });
上述方法告訴系統(tǒng)由我這個(gè) WebViewClient 處理這個(gè) Intent,我來加載 URL。 點(diǎn)擊一個(gè)鏈接的 Intent 是向上冒泡的,
shouldOverrideUrlLoading 方法 return true 表示我加載后這個(gè) Intent 就消費(fèi)了, 不再向上冒泡了。

7、 如果不做任何處理, 在顯示你的 Brower UI 時(shí), 點(diǎn)擊系統(tǒng)“Back”鍵, 整個(gè) Browser 會(huì)作為一個(gè)整體“Back" }
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true;
到其他 Activity 中,而不是希望的在 Browser 的歷史頁(yè)面中 Back。

 

穩(wěn)定

產(chǎn)品高可用性高并發(fā)

貼心

項(xiàng)目群及時(shí)溝通

專業(yè)

產(chǎn)品經(jīng)理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽(yù)

堅(jiān)持

10年專注高端品質(zhì)開發(fā)
  • 返回頂部