国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 系統 > Android > 正文

Android開發之WebView組件的使用解析

2020-04-11 12:39:42
字體:
來源:轉載
供稿:網友
在 Android 手機中內置了一款高性能 webkit 內核瀏覽器, SDK 中封裝為一個叫做 WebView 組件。
WebView 類是 WebKit 模塊 Java 層的視圖類,( 所有需要使用 Web 瀏覽功能的Android應用程序都要創建該視圖對象顯示和處理請求的網絡資源。目前,WebKit 模塊支持 HTTP、HTTPS、FTP 以及 javascript 請求。
WebView 作為應用程序的 UI 接口,為用戶提供了一系 列的網頁瀏覽、用戶交互接口,客戶程序通過這些接口訪問 WebKit 核心代碼。 )

什么是 webkit
WebKit 是 Mac OS X v10.3 及以上版本所包含的軟件框架(對 v10.2.7 及以上版本也可通過 軟件更新獲取) 同時,
WebKit 也是 Mac OS X 的 Safari 網頁瀏覽器的基礎。WebKit 是一個開源項目,主要由 KDE 的 KHTML 修改而來并且包含了一些來自蘋果公司的一些組件。
傳統上, WebKit 包含一個網頁引擎 WebCore 和一個腳本引擎 JavaScriptCore,它們分別對應 的是 KDE 的 KHTML 和 KJS。
不過,隨著 JavaScript 引擎的獨立性越來越強,現在 WebKit 和 WebCore 已經基本上混用不分(例如 Google Chrome 和 Maxthon 3 采用 V8引擎,卻仍然 宣稱自己是 WebKit 內核) 。
這里我們初步體驗一下在 android 是使用 webview 瀏覽網頁,

SDK 的 Dev Guide 中有一個 在 WebView 的簡單例子 。 在開發過程中應該注意幾點: 1.AndroidManifest.xml 中必須使用許可"android.permission.INTERNET",否則會出 Web page not available 錯誤。
2.如果訪問的頁面中有 Javascript,則 webview 必須設置支持 Javascript。 webview.getSettings().setJavaScriptEnabled(true);
3.如果頁面中鏈接, 如果希望點擊鏈接繼續在當前 browser 中響應, 而不是新開 Android 的系統browser 中響應該鏈接,必須覆蓋 webview 的 WebViewClient 對象。
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.如果不做任何處理,瀏覽網頁,點擊系統“Back”鍵,整個 Browser 會調用 finish()而結束自身,
如果希望瀏覽的網 頁回退而不是推出瀏覽器,需要在當前 Activity 中處理并消費 掉該 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上放一個漂亮頁面
1.加載網頁(加權限)
定義一個網址輸入文本框,點按鈕用webView打開這個網頁
2.編寫data字符串,webview.loadData(data,"text/html","UTF-8");
3.用dialog的setiem打開網址,前進,后退,放大,縮小,清歷史。
4.用HTML定義開發界面。file:/android_asset/a.html
復制代碼 代碼如下:

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

5.js對話框(用chom..)
復制代碼 代碼如下:

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

java調js中的方法:
復制代碼 代碼如下:

//在java中調用javascript方法要通過loadUrl()來進行,把要調用的方法作為loadUrl方法的字符串參數
settings.setJavaScriptEnabled(true);//設置在webview中可用js
webview.loadUrl("javascript:myprompt1()");

javascript中調java中的方法:(特別強調要用Android2.2版模擬器)
復制代碼 代碼如下:

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

------------javascript中:-----
復制代碼 代碼如下:

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

WebView控件功能強大,除了具有一般View的屬性和設置外,還可以對url請求、頁面加載、渲染、頁面交互進行強大的處理。
WebView有幾個可以定制的點:
(1)設置WebChromeClient子類,WebChromeClient會在一些影響瀏覽器ui交互動作發生時被調用,比如WebView關閉和隱藏、頁面加載進展、js確認框和警告框、js加載前、js操作超時、webView獲得焦點等等,詳見WebChromeClient
(2)設置WebViewClient子類,WebViewClient會在一些影響內容喧嚷的動作發生時被調用,比如表單的錯誤提交需要重新提交、頁面開始加載及加載完成、資源加載中、接收到http認證需要處理、頁面鍵盤響應、頁面中的url打開處理等等,詳見WebViewClient
(3)設置WebSettings類,其中包含多項配置。WebSettings用來對WebView的配置進行配置和管理,比如是否可以進行文件操作、緩存的設置、頁面是否支持放大和縮小、是否允許使用數據庫api、字體及文字編碼設置、是否允許js腳本運行、是否允許圖片自動加載、是否允許數據及密碼保存等等,詳見WebSettings
(4)設置addJavascriptInterface方法,將java對象綁定到webView中,以方便從頁面js中控制java對象, 實現用本地java代碼和html頁面進行交互,甚至可以進行頁面自動化。但如此做存在安全隱患,所以若設置了此方法,請確保webView的代碼都是自己完成,詳細使用addJavascriptInterface進行自動化見本文5使用addJavascriptInterface完成和js交互
1、back鍵控制網頁后退
Activity默認的back鍵處理為結束當前Activity,webView查看了很多網頁后,希望按back鍵返回上一次瀏覽的頁面,這個時候我們就需要覆蓋onKeyDown函數,告訴他如何處理,如下:
復制代碼 代碼如下:

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);
}

其中webView.canGoBack()在webView含有一個可后退的瀏覽記錄時返回true
webView.goBack();表示返回webView的上次訪問頁面
WebView(網絡視圖)能加載顯示網頁,可以將其視為一個瀏覽器。
網絡內容:
1、LoadUrl直接顯示網頁內容(單獨顯示網絡圖片)
2、LoadData顯示中文網頁內容(含空格的處理)
APK包內文件:
1、LoadUrl顯示APK中Html和圖片文件
2、LoadData(loadDataWithBaseURL)顯示APK中圖片和文字混合的Html內容res/layout/main.xml
----------------------------------------------------------
當運行提示為web page not available時去清單文件中添加權限
<uses-permission android:name="android.permission.INTERNET"/>
URLUtil.isNetworkUrl(String uri)方法用來判斷用戶輸入的URL是否有效,如無效則會顯示一個Toast信息框來提醒用戶輸入正確的URL
----------------------------------------------------------
步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以后為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加權限,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>
下面是具體的例子:
MainActivity.java
復制代碼 代碼如下:

package com.android.webview.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
private WebView webview;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
webview = (WebView) findViewById(R.id.webview);
//設置WebView屬性,能夠執行Javascript腳本
webview.getSettings().setJavaScriptEnabled(true);
//加載需要顯示的網頁
webview.loadUrl("http://www.8way.com/");
//設置Web視圖
webview.setWebViewClient(new HelloWebViewClient ());
}
@Override
//設置回退
//覆蓋Activity類的onKeyDown(int keyCoder,KeyEvent event)方法
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
webview.goBack(); //goBack()表示返回WebView的上一頁面
return true;
}
return false;
}
//Web視圖
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}

main.xml
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<WebView
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
在AndroidManifest.xml文件中添加權限
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.webview.activity"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

webview學習記錄總結:
首先要在 manifest.main 文件中創建一個 webview,
然后再 activity 中定義這個 webview 然后 進行以下相關操作。
1、添加權限:AndroidManifest.xml 中必須使用許可"android.permission.INTERNET",否則會出 Web page not available 錯誤。
2、在要Activity 中生成一個 WebView 組件:WebView webView = new WebView(this);
3、設置WebView 基本信息:
如果訪問的頁面中有 Javascript,則 webview 必須設置支持 Javascript。
webview.getSettings().setJavaScriptEnabled(true);
觸摸焦點起作用 requestFocus(); 取消滾動條 this.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY);
4 如果希望點擊鏈接由自己處理,而不是新開 Android 的系統 browser 中響應該鏈接。
給 WebView添加一個事件監聽對象( WebViewClient)并重寫其中的一些方法:
shouldOverrideUrlLoading:對網頁中超鏈接按鈕的響應。當按下某個連接時 WebViewClient會調用這個方法,
并傳遞參數:按下的 url onLoadResource onPageStart onPageFinish onReceiveError onReceivedHttpAuthRequest
5、如果訪問的頁面中有 Javascript,則 webview 必須設置支持 Javascript ,否則顯示空白頁面。
Java 代碼 webview.getSettings().setJavaScriptEnabled(true);
6、如果頁面中鏈接,如果希望點擊鏈接繼續在當前 browser 中響應,而不是新開 Android 的系統 browser 中響應該鏈接,必須覆蓋 webview 的 WebViewClient 對象: Java 代碼 1.mWebView.setWebViewClient(new WebViewClient(){ 2. 3. 4. 5. 6. });
上述方法告訴系統由我這個 WebViewClient 處理這個 Intent,我來加載 URL。 點擊一個鏈接的 Intent 是向上冒泡的,
shouldOverrideUrlLoading 方法 return true 表示我加載后這個 Intent 就消費了, 不再向上冒泡了。
7、 如果不做任何處理, 在顯示你的 Brower UI 時, 點擊系統“Back”鍵, 整個 Browser 會作為一個整體“Back" }
public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true;
到其他 Activity 中,而不是希望的在 Browser 的歷史頁面中 Back。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产麻豆精品高清在线播放| 国产污视频在线| 日本视频在线| 国产精美视频| 午夜视频在线| 亚洲www色| 四虎成人免费| 黄色电影网站在线观看| 亚洲欧美综合乱码精品成人网| 好吊日视频在线观看| 欧美黑人乱大交| 热99在线观看| 国产主播福利在线| 国产女主播在线观看| 中文字幕4区| av片在线观看| 在线免费看黄网站| 最好看更新中文字幕| 91极品在线| 亚洲精品白浆| 久久久久久国产视频| 欧美96在线| 99视频资源网| 在线视频xx| 中文字幕网在线| www.久草.com| 国产二级c片l毛片| 久久久久国产精品嫩草影院| 91最新在线| 国产深夜福利| 国产九色视频| 日本福利午夜视频在线| 国产黄色一级片| 国产一级网站视频在线| 日本不卡视频一区二区| 国产叼嘿网站免费观看不用充会员| 青青青青在线| av在线免费观看网| 国产福利热线视频| 国产高清免费av在线| 国产三级视频在线播放线观看| 日韩精品免费一区二区| 影音先锋日韩| 亚洲一区免费在线| 一本大道久久精品| 国产91足控脚交在线观看| 亚洲欧美综合乱码精品成人网 | 国产美女性感在线观看懂色av| 依依成人在线| 在线免费国产视频| 尤物在线精品视频| 在线免费看av| 青草青在线视频| 国产女人伦码一区二区三区不卡| 另类综合图区| 99视频免费| 国产自产视频| 国产精品xxx电影| 伊人影院蕉久影院在线播放| 亚洲欧美日韩成人网| 日本卡一卡2卡3卡4精品卡网站| 精品一二三区视频| 性网站在线看| 国产毛片毛片| 精品无吗乱吗av国产爱色| 99福利在线| 超碰在线97国产| 中文字幕成人乱码在线电影| 国产盗摄一区二区| www.狠狠色.com| 中文字幕不卡免费视频| 国产成人精品久久一区二区小说| 亚洲久草视频| 最近中文字幕mv免费高清视频8| 国产91久久久久| 美女av在线播放| 国产盗摄一区二区| 黄网址在线永久免费观看| 国产一级黄色片免费| 99在线免费观看| 九九热视频免费观看| 精品美女在线观看视频在线观看 | 国产午夜精品久久久久免费视| 国产经典自拍视频在线观看| 亚洲va国产日韩欧美精品色婷婷| 最新中文字幕在线| wwwww亚洲| 在线观看av资源网| 日韩av成人| а天堂8中文最新版在线官网| 国产福利免费观看| 中文字幕在线视频观看| 欧美性猛交xxxx免费看蜜桃| 国产日本在线观看| 国产一区二区影视| 福利视频网站导航| 国产在线播放av| 午夜影院免费看| 在线视频1区2区| 夜夜操天天干| 午夜在线观看91| 亚洲精品白浆| 欧美精品se| 国产在线更新| jlzzjlzz欧美| 欧美日韩不卡中文字幕在线| 亚洲第一成年免费网站| 四虎成人免费| 亚洲一本大道| 青青草中文字幕| 免费av在线| 国产美女福利在线观看| 国产69久久| 好看的中文字幕在线播放| 久久久久久国产视频| 国产乱视频在线观看| 国产无套粉嫩白浆在线2022年| 国产一级网站视频在线| 国产精品国产国产aⅴ| 国产高清视频在线播放| 亚洲综合在线免费| 欧美日韩视频精品一区二区| 麻豆精品不卡国产免费看| 免费在线黄色av| 最新天堂资源在线| 中文资源在线官网| 麻豆精品视频入口| 免费观看久久久久| 国产视频福利在线| 欧美在线中文| 国产精品视频一区二区免费不卡| 国产视频一二三区| 轻轻色免费在线视频| 国产视频在线播放| 天天干天天摸| 国产精品免费视频一区一| а天堂8中文最新版在线官网| 国产69精品久久app免费版| 国产视频xxx| 日本成a人片在线观看| 国产黄色大片在线观看| 成av人免费青青久| 99精品老司机免费视频| 国产网友自拍电影在线| 日本欧洲一区| 99免费视频| 2019年中文字幕| 最近免费中文字幕大全免费第三页 | 最近中文字幕mv免费高清视频8 | 国产福利小视频在线观看| 麻豆国产在线播放| 在线看黄网站| 国产极品一区二区三区| 成人欧美亚洲| 青青草原国产在线观看| av在线不卡网站| jizz亚洲大全| 亚洲日本一区二区三区在线观看| 天天操夜夜摸| 国产美女av| 天堂在线一二区| 国产有码在线| 国产专区在线| 尤物视频在线观看| 久热国产在线视频| www.91在线播放| 激情丁香在线| 成人精品福利| 国产一区二区三区福利| 国产视频一二区| 国产成人精品自线拍| 2020国产在线视频| 精品无人区乱码1区2区3区免费| 国产网站麻豆精品视频| 国产探花在线观看| 91欧洲在线视精品在亚洲| 91网页在线观看| www.操操操| 中文字幕久热在线精品| 国产婷婷视频在线| av免费在线一区二区三区| www操操操| 国产精美视频| 欧美啪啪精品| 最近免费中文字幕在线第一页| 国产三级视频| sese一区| 国产激情在线视频| 日本成人网址| 国产精品9区| 免费女人毛片视频| 中文av资源在线| 黄色av网站在线免费观看| 91看片在线观看| www.操操操| 国产精品入口麻豆高清| 久热国产在线视频| 亚洲免费国产| 国产对白在线| 中文字幕在线观看播放|