androidwebview
⑴ 如何解決Android WebView出現的亂碼問題
1、webView.loadUrl();
直接顯示網頁內容(單獨顯示網路圖片),一般不會出現亂碼。
2、webView.loadData(data, "text/html", "UTF-8");
loadData主要被設計用來裝載URI格式的數據,它不能通過網路來載入內容。網上流傳的webview載入中文出現亂碼,多數是使用此方法。使用過程中主要有兩個問題:
(1)loadData不能載入圖片內容,如果想載入圖片內容或者獲得更強大的Web支持建議使用更強大的loadDataWithBaseURL.
(2) 許多實用loadData方法的朋友都遇到顯示亂碼的問題,那是因為編碼器設置錯誤導致的。我們知道String類型的數據主要是unicode編碼,而WebView一般為了節省資源使用的是UTF-8編碼,所以我們在loadData的時候要告訴方法怎樣轉碼。即要告訴它要將unicode編碼的內容轉成UTF-8編碼的內容。有些朋友雖然在loadData的時候設置了編碼方式,但是還是顯示亂碼,這是因為還需要為WebView的text編碼指定編碼方式。舉例如下:
WebView wv = (WebView)findViewById(R.id.webview) ;
wv.getSettings().setDefaultTextEncodingName(「UTF -8」) ;
wv.loadData(content, 「text/html」, 「UTF-8」) ;
注意為gb2312或gbk
(3).網頁說明編碼格式
以上兩種方法是網上給的比較好的方法,但是我都試了下都沒有解決我的亂碼問題。 原來我是用LoadData方法來解析html的,但是據說這是官方的一個BUG,不能用來解析中文。所以繞其道而行之,採用loadDataWithBaseURL的方法,其中codeingType設置為utf-8就OK了。3、loadDataWithBaseURL如果單純顯示文字的話可以寫webView.loadDataWithBaseURL(null, string, "text/html", "utf-8", null);
如果要顯示圖片可以寫webView.loadDataWithBaseURL(baseUrl, string, "text/html", "utf-8", null);
其中baseUrl為你存儲照片的路徑,比如:
⑵ android 什麼時候適合用webview
一開始就有的。
Android webview使用詳解
1. 打開網頁時不調用系統瀏覽器, 而是在本WebView中顯示:
mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
});
2. 通過java代碼調用javascript
WebSettings webSettings = mWebView .getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
webview.loadUrl("javascript:wave()");
}
});
}
}, "demo");
3. 按返回鍵時, 不退出程序而是返回上一瀏覽頁面:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
4. 打開頁面時, 自適應屏幕:
WebSettings webSettings = mWebView .getSettings();
webSettings.setUseWideViewPort(true);//設置此屬性,可任意比例縮放
webSettings.setLoadWithOverviewMode(true);
5. 便頁面支持縮放:
WebSettings webSettings = mWebView .getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);
6.如果webView中需要用戶手動輸入用戶名、密碼或其他,則webview必須設置支持獲取手勢焦點。
webview.requestFocusFromTouch();
7.WebView 載入界面主要調用三個方法:LoadUrl、LoadData、LoadDataWithBaseURL.
1、LoadUrl 直接載入網頁、圖片並顯示.(本地或是網路上的網頁、圖片、gif)
2、LoadData 顯示文字與圖片內容 (模擬器1.5、1.6)
3、LoadDataWithBase 顯示文字與圖片內容(支持多個模擬器版本)
8.WebSettings 的常用方法介紹
setJavaScriptEnabled(true); //支持js
setPluginsEnabled(true); //支持插件
setUseWideViewPort(false); //將圖片調整到適合webview的大小
setSupportZoom(true); //支持縮放
setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); //支持內容重新布局
supportMultipleWindows(); //多窗口
setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //關閉webview中緩存
setAllowFileAccess(true); //設置可以訪問文件
setNeedInitialFocus(true); //當webview調用requestFocus時為webview設置節點
webview webSettings.setBuiltInZoomControls(true); //設置支持縮放
(true); //支持通過JS打開新窗口
setLoadWithOverviewMode(true); // 縮放至屏幕的大小
setLoadsImagesAutomatically(true); //支持自動載入圖片
9.WebViewClient 的方法全解
doUpdateVisitedHistory(WebView view, String url, boolean isReload) //(更新歷史記錄)
onFormResubmission(WebView view, Message dontResend, Message resend) //(應用程序重新請求網頁數據)
onLoadResource(WebView view, String url) // 在載入頁面資源時會調用,每一個資源(比如圖片)的載入都會調用一次。
onPageStarted(WebView view, String url, Bitmap favicon) //這個事件就是開始載入頁面調用的,通常我們可以在這設定一個loading的頁面,告訴用戶程序在等待網路響應。
onPageFinished(WebView view, String url) //在頁面載入結束時調用。同樣道理,我們知道一個頁面載入完成,於是我們可以關閉loading 條,切換程序動作。
onReceivedError(WebView view, int errorCode, String description, String failingUrl)// (報告錯誤信息)
onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host,String realm)//(獲取返回信息授權請求)
onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) //重寫此方法可以讓webview處理https請求。
onScaleChanged(WebView view, float oldScale, float newScale) // (WebView發生改變時調用)
onUnhandledKeyEvent(WebView view, KeyEvent event) //(Key事件未被載入時調用)
shouldOverrideKeyEvent(WebView view, KeyEvent event)//重寫此方法才能夠處理在瀏覽器中的按鍵事件。
shouldOverrideUrlLoading(WebView view, String url)
//在點擊請求的是鏈接是才會調用,重寫此方法返回true表明點擊網頁裡面的鏈接還是在當前的webview里跳轉,不跳到瀏覽器那邊。這個函數我們可以做很多操作,比如我們讀取到某些特殊的URL,於是就可以不打開地址,取消這個操作,進行預先定義的其他操作,這對一個程序是非常必要的。
⑶ Android WebView 在開發過程中有哪些坑
多線程 如果在子線程中調用WebView的相關方法,而不在UI線程,則可能會出現無法預料的錯誤。 所以,當程序中需要用到多線程時候,也請使用 runOnUiThread()方法來保證關於WebView的操作是在UI線程中進行的: runOnUiThread(newRunnable(){ @Ov...
首先webview可以載入兩種:1.帶標簽的富文本;2.網頁地址。 1、載入富文本: webView.loadDataWithBaseURL(null, html, "text/html", "utf-8", null); 其中,加粗的地方是服務端返回的String類型的富文本,"text/html"是轉換類型,utf-8是編碼格...
下面說說我比較困惑的幾個地方。 1.WebViewClient.onPageFinished()。你永遠無法確定當WebView調用這個方法的時候,網頁內容是否真的載入完畢了。當前正在載入的網頁產生跳轉的時候這個方法可能會被多次調用,StackOverflow上有比較具體的解釋(...
注意4.4系統前後的區別,在這個版本裡面谷歌把webview的內核換成谷歌瀏覽器的! 在webview中進行JavaScript交互時也要注意,出於對安全性的考慮,在設置與JavaScript有關的選項時,需要在所在方法的前面加上@SuppressLint({ "JavascriptInterfac...
自Android 4.4起,引入了webView,使用需要注意的事項: 1.多線程 如果你在子線程中調用WebView的相關方法,而不在UI線程,則可能會出現無法預料的錯誤。 所以,當你的程序中需要用到多線程時候,也請使用 runOnUiThread()方法來保證你關於WebVi...
Android開發需要注意的幾項: 1、導入的類庫需要和項目在同級目錄下,謹防資源文件與類庫中沖突。 2、textviewsetText為int時候,textview的color代碼設置,set/getTextSize 單位問題。 3、json 屬性節點不能有空格。 4、asset下使用第三方字體 ...
自Android 4.4起,引入了webView,使用需要注意的事項: 1.多線程 如果在子線程中調用WebView的相關方法,而不在UI線程,則可能會出現無法預料的錯誤。
⑷ Android System Webview是什麼東西
這是安卓系統內置webkit內核瀏覽器的一個組件,組件名稱為Webview。
WebView是安卓系統中一款基於webkit引擎、展現web頁面的控制項。Android的Webview在低版本和高版本採用了不同的webkit版本內核,在版本更新到4.4後直接使用了Chrome版本。
WebView能夠對Web頁面進行i顯示和渲染,可以直接使用html文件(網路上或本地assets中)作布局,更可以可和JavaScript交互調用。
WebView控制項功能強大,除了具有一般View的屬性和設置外,還可以對url請求、頁面載入、渲染、頁面交互進行強大的處理。
總的來說,webView是用於展示網路請求後的結果,比如:開發者開發一款APP,如果想要用它訪問網路,但是不想使用手機安裝的瀏覽器,而是想在自己APP內部打開展示網頁,此時就可以使用webView這個組件來展示網頁。
(4)androidwebview擴展閱讀:
WebView組件使用的WebKit引擎。默認情況下,WebView不支持JavaScript,web頁面的錯誤也會被忽略,如果只是用Webview來顯示網頁而不用交互,默認配置就可以了。如果需要交互,就需要自定義配置了。
WebView載入遠程網頁語法格式:
webView.loadUrl("http://www..com");
WebView載入assets目錄下的本地網頁語法格式:
webView.loadUrl("file:///android_asset/test.html");
WebView載入手機本地網頁語法格式:
webView.loadUrl("content://com.android.htmlfileprovider/sdcard/test.html");
WebView載入HTML代碼片段語法格式:
webView.loadData(data, "text/html", "utf-8");
webView.loadDataWithBaseURL(null, data, "text/html", "utf-8", null);
⑸ Android webview 傳參大小
Android webview 傳參大小如下
訂單頁面是webview,但是支付頁面是客戶端做,所以要在去付款的標簽上onclick js傳參。
function OrderPay(order_id,pay_type,pay_account_id) {undefinedif (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {undefinedwindow.location.href = 'aoxintest://OrderId/' + order_id+'/PayType/'+pay_type+'/PayAccountId/'+pay_account_id;} else if (navigator.userAgent.match(/(android);?/i)) {undefinedwindow.androidOrderPay.AndroidOrderPay(order_id,pay_type,pay_account_id);
有點難懂,ios系統判斷傳參的那個還好,但是android的代碼看得一頭霧水。再網上查到了一篇講Android WebView的文章:
就是WebView的Js代碼可以調用到Android代碼中的方法,可以用AddJavascriptInterface方法在JS和Android間綁定一個新的窗口。因此JS代碼中的androidOrderPay應該只是JAVA對象的別名的意思么。
⑹ android system webview是什麼
Webview是chrome瀏覽器的內核,所有安卓手機必須預裝,用於顯示網頁,手機的APP可以調用它顯示網頁而不需要瀏覽器,升級以提升系統整體集成應用的網頁性能。此應用缺失會導致手機功能故障。
最好不要卸載,這個程序刪除以後手機上的瀏覽器打開就會停止。
拓展資料
Android WebView在Android平台上是一個特殊的View, 基於webkit引擎、展現web頁面的控制項,這個類可以被用來在你的app中僅僅顯示一張在線的網頁,還可以用來開發瀏覽器。WebView內部實現是採用渲染引擎來展示view的內容,提供網頁前進後退,網頁放大,縮小,搜索。Android的Webview在低版本和高版本採用了不同的webkit版本內核,4.4後直接使用了Chrome。
現在很多APP都內置了Web網頁,WebView比較靈活,不需要升級客戶端,只需要修改網頁代碼即可。一些經常變化的頁面可以用WebView這種方式去載入網頁。
Webview功能強大,可以直接使用html文件(本地sdcard/assets目錄),還可以直接載入url,使用JavaScript可以html跟原生APP互調。
⑺ com.google.android.webview是什麼應用
谷歌商店安卓版
webview的作用即用於手機系統來展示html界面的 所以它主要在需要在手機系統上載入html文件時被需要。Android是安卓版的意思
⑻ Android系統 WebView是什麼有什麼用
現在越來越多的APP都內置了Web網頁去載入視圖,也就是我們常說的Hybrid APP混合應用,市場上很多平台都是這樣做的,比如我們經常使用的淘寶、京東等電商平台。這些是如何實現的呢?在我們Android中有一個WebView組件,它就可以實現此類功能。它是Android中的原生UI控制項,主要用於在APP應用中方便地訪問遠程網頁或本地HTML資源,同時WebView也在Android中充當Java代碼和JS代碼之間交互的橋梁,實際上也可以將WebView看做一個功能最小化的瀏覽器。下面我們一起來看看WebView的一些常用的使用方法。
WebView是Android系統提供的一個能顯示網頁的系統控制項,它是一個特殊的View,同時也是一個ViewGroup,可以有很多其他子View。在Android 4.4以下(不包含4.4)系統WebView底層實現是採用WebKit內核,而在Android 4.4及其以上Google採用了Chromium內核作為系統WebView的底層內核支持。在這一變化中Android提供的WebView相關API並沒有發生較大變化,在4.4上也兼容低版本的API並且引進了少部分API。這里簡單介紹下基於Chromium的WebView和基於WebKit的WebView之間的差異,基於Chromium的Webview提供了更廣的HTML5、CSS3、JavaScript支持,在Android系統版本5.0上基於Chromium 37,WebView提供了絕大多數的HTML5特性支持,除此之外Chromium也支持遠程調試(Chrome DevTools)。WebKit JavaScript引起採用WebCore JavaScript在Android 4.4上換成了V8能直接提升JavaScript性能。
二、作用
1、顯示和渲染Web頁面
2、使用html文件(網路上或本地assets中)作為布局
3、可與JavaScript交互調用
註: WebView控制項功能強大,除了具有一般View的屬性和設置外,還可以對Url請求、頁面載入、渲染、頁面交互進行強大的處理。
⑼ android載入webview有哪幾種方式
WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />
第二種方法的步驟:
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"/>