當前位置:首頁 » 安卓系統 » androidwebview下載

androidwebview下載

發布時間: 2022-09-18 02:16:40

㈠ android webview 有哪些軟體應用

轉載 本文主要對WebView進行介紹,包括webView 4個可以定製的點、設置WebView back鍵響應、控制網頁的鏈接仍在webView中跳轉、顯示頁面載入進度、處理https請求、利用addjavascriptInterface實現android程序和javascript交互等等

WebView基於webkit引擎展現web頁面的控制項,使用前需要在Android Manifest file中配置internet訪問許可權,否則提示頁面無法訪問
Xml代碼 [url=][/url]

<uses-permission
android:name="android.permission.INTERNET"
/>

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函數,告訴他如何處理,如下:
Java代碼 [url=][/url]

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的上次訪問頁面

2、當前網頁的鏈接仍在webView中跳轉
Java代碼 [url=][/url]

webView.setWebViewClient(new WebViewClient() {

@Override
public
boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return
true;
}
});

shouldOverrideUrlLoading表示當前webView中的一個新url需要載入時,給當前應用程序一個處理機會,如果沒有重寫此函數,webView請求ActivityManage選擇合適的方式處理請求,就像彈出uc和互聯網讓用戶選擇瀏覽器一樣。重寫後return true表示讓當前程序處理,return false表示讓當前webView處理
Xml代碼 [url=][/url]

Give the host application a chance to take over the control when a new url is about to be loaded in the current WebView. If WebViewClient is not provided, by default WebView will ask Activity Manager to choose the proper handler for the url. If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.

參考:
http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

問題分析:
今天在用webView load騰訊的OAuth頁面http://open.t.qq.com/cgi-bin/authorize
時,突然彈出選擇uc還是互聯網瀏覽器的確認框,很奇怪,其他頁面都能正常load,而這個卻無法在webView中load,後來用火狐看了下是因為load這個頁面的時候會重定向到另外一個頁面http://open.t.qq.com/oauth_html/login.php?oauth_token=xxx&type=0,而webView沒有設置shouldOverrideUrlLoading,導致url交給了ActivityManage去處理,解釋如上,後添加後可正常load頁面

3、頁面載入進度
代碼如下
Java代碼 [url=][/url]

webView.setWebChromeClient(new WebChromeClient() {

public
void onProgressChanged(WebView view, int progress) {
setTitle("頁面載入中,請稍候..." + progress + "%");
setProgress(progress * 100);

if (progress == 100) {
setTitle(R.string.app_name);
}
}
});

onProgressChanged通知應用程序當前頁面載入的進度
progress
表示當前頁面載入的進度,為1至100的整數
參考:
http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView, int)

4、處理https請求
webView默認是不處理https請求的,頁面顯示空白,需要進行如下設置:
Java代碼 [url=][/url]

webView.setWebViewClient(new WebViewClient() {

@Override
public
void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
// handler.cancel();
// handler.handleMessage(null);
}
});

onReceivedSslError為webView處理ssl證書設置
其中handler.proceed();表示等待證書響應
handler.cancel();表示掛起連接,為默認方式
handler.handleMessage(null);可做其他處理
參考:
http://developer.android.com/reference/android/webkit/WebViewClient.html#onReceivedSslError(android.webkit.WebView, android.webkit.SslErrorHandler, android.net.http.SslError)

5、使用addJavascriptInterface完成和js交互
5.1 javascript中調用java對象及方法
設置webView的addJavascriptInterface方法,該方法有兩個參數,第一個參數為被綁定到js中的類實例,第二個參數為在js中暴露的類別名,在js中引用java對象就是用這個名字
Java代碼 [url=][/url]

ClassBeBindedToJS classBeBindedToJS = new ClassBeBindedToJS();
webView.addJavascriptInterface(classBeBindedToJS, "classNameBeExposedInJs");

實現綁定到js的類,其中的javaMethod方法我們將在頁面前端js中調用,用於返回一段內容。showHtml用來使用AlertDialog顯示一段html代碼,稍後將使用到
Java代碼 [url=][/url]

private
class ClassBeBindedToJS{
public
void showHtml(String html){
new AlertDialog.Builder(UpdateStatusActivity.this)
.setTitle("HTML").setMessage(html)
.setPositiveButton(android.R.string.ok, null)
.setCancelable(false).create().show();
}
public String javaMethod() {
return
"use java method";
}
};

如此我們就可以在前端調用java對象,如下:
Html代碼 [url=][/url]

<span><html>
<body>
<div
id="displayDiv">Test page.</div>
<input
type="button"
value="use java object"
onclick="document.getElementById('</span>displayDiv').innerHTML=classNameBeExposedInJs.javaMethod()"
/>
<span>
</body>
</html></span>

這段html作用為點擊button按鈕,改變div內容為java對象方法中的內容,其中classNameBeExposedInJs為java對象在js中的別名,javaMethod為java對象的方法

5.2 java中調用js方法
用webView的loadUrl實現,比如現在我們想在頁面載入完成後調用js中的hello函數,實現如下:
Java代碼 [url=][/url]

webView.setWebViewClient(new WebViewClient() {
@Override
public
void onPageFinished(WebView webView, String url){
webView.loadUrl("javascript:hello()");
}
});

怎麼樣,很簡單吧^_^,直接loadUrl("javascript:hello()")就可以了
利用這一點我們可以很方便的實現WebView的自動化,如網頁自動化登錄。舉個栗子,實現http://m.renren.com/ 的自動登錄啊,代碼如下
Java代碼 [url=][/url]

webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://m.renren.com");
webView.requestFocus();

ClassBeBindedToJS classBeBindedToJS = new ClassBeBindedToJS();
webView.addJavascriptInterface(classBeBindedToJS, "classNameBeExposedInJs");
webView.setWebViewClient(new WebViewClient() {
@Override
public
void onPageFinished(WebView webView, String url){
webView.loadUrl("javascript:document.getElementsByName('email')[0].value='userName'");
webView.loadUrl("javascript:document.getElementsByName('password')[0].value='userPassword'");
webView.loadUrl("javascript:document.getElementsByName('login')[0].click()");
}
});

從中可以看出先載入http://m.renren.com頁面,在頁面載入完成onPageFinished後,調用js實現自動登錄
其中三句js分別表示設置用戶名文本框內容、設置用戶密碼文本框內容、點擊登錄按鈕,如此登錄成功嘍

5.3 java和js混用實現一些效果
5.3.1 WebView用AlertDialog顯示頁面的html代碼
之前5.1中的showHtml方法現在派上用場啦,在頁面載入完成後顯示頁面html內容,如下:
Java代碼 [url=][/url]

webView.setWebViewClient(new WebViewClient() {
@Override
public
void onPageFinished(WebView webView, String url){
webView.loadUrl("javascript:window.classNameBeExposedInJs.showHtml(document.getElementsByTagName('html')[0].innerHTML);");
}
});

其中webView.loadUrl表示調用頁面中的js,而頁面中的js window.classNameBeExposedInJs.showHtml調用了程序中的java對象的方法,方法參數為一段js。
首先webView會執行這一段js document.getElementsByTagName('html')[0].innerHTML。含義即為取得頁面中html標記的innerHTML,及網頁主要內容;
然後將得到的網頁內容當作字元串參數傳入showHtml方法
最後調用showHtml函數實現,即用AlertDialog顯示字元串,如此得到了整個網頁的大部分html代碼

5.3.2 WebView顯示當前頁面的url地址
獲得WebView當前頁面url使用webView.getUrl()即可,如下:
Java代碼 [url=][/url]

webView.loadUrl("javascript:window.classNameBeExposedInJs.showHtml('" + webView.getUrl() + "');");

㈡ Android webview載入網頁時希望他的默認瀏覽器是火狐

您好!很高興為您答疑。
這個是無法通過代碼設置的,實際上在安卓系統下,這個開啟默認的程序是通過系統指定的。
如果對我們的回答存在任何疑問,歡迎繼續問詢。

㈢ Android_系統_WebView_2b5f0133.apk+(+90.5+M+)這款軟體有安全

摘要 如果點了下面的會不安全

㈣ android webview 遠程 html如何載入本地js

先把html文件下載到本地,然後更改html中js的路徑為本地路徑之後進行調用。
1.需要先寫一個 LocalFileContentProvider
public class LocalFileContentProvider extends ContentProvider {
public static final String URI_PREFIX = "content://com.youpackage";//這里更改為你的包名

public static String constructUri(String url) {
Uri uri = Uri.parse(url);
return uri.isAbsolute() ? url : URI_PREFIX + url;
}

@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
File file = new File(uri.getPath());
ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
return parcel;
}

@Override
public boolean onCreate() {
return true;
}

@Override
public int delete(Uri uri, String s, String[] as) {
throw new UnsupportedOperationException("Not supported by this provider");
}

@Override
public String getType(Uri uri) {
throw new UnsupportedOperationException("Not supported by this provider");
}

@Override
public Uri insert(Uri uri, ContentValues contentvalues) {
throw new UnsupportedOperationException("Not supported by this provider");
}

@Override
public Cursor query(Uri uri, String[] as, String s, String[] as1, String s1) {
throw new UnsupportedOperationException("Not supported by this provider");
}

@Override
public int update(Uri uri, ContentValues contentvalues, String s, String[] as) {
throw new UnsupportedOperationException("Not supported by this provider");
}

}

2. 類似 jsUrl為網路端url jsPath為本地路徑 data為html文件的字元串內容
data = data.replace(jsUrl, LocalFileContentProvider.URI_PREFIX+jsPath);

mWebView.loadDataWithBaseURL("http://yourwebsite", data, "text/html", "UTF-8", "");

㈤ 安卓webview是木馬嗎

摘要 你好WebView是安卓系統中一款基於webkit引擎、展現web頁面的控制項。這是安卓系統內置webkit內核瀏覽器的一個組件,組件名稱為Webview。

㈥ Android 中的webview為何設置了setDownloadListener無效呢

webview里是用html語言管控的,在html語言里置頂就可以了,用絕對位置

㈦ 安卓的各個版本以及對應的安卓webview的版本是多少

在瀏覽器中我們只需要輸入 javascript:alert(navigator.userAgent),即可獲得android 內置瀏覽器內核版本。一般不同型號的手機版本也不一樣,在不斷的更新迭代

㈧ android webview 怎麼使用本地緩存

android
webview使用本地緩存的話,思路如下:
定義一個離線下載的服務Service
啟動後台服務Service來執行非同步下載
存儲到本地資料庫中
每一次載入url之前,先判斷資料庫是否存在緩存內容
5.如果存在緩存,優先載入本地緩存,如果不存在,才執行聯網請求

㈨ 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"/>

㈩ vivoiqoo手機中ⅱ·android system webview是什麼軟體很費流量

可進入vivo官網/vivo商城APP--我的--在線客服或者vivo官網網頁版--下滑底部--在線客服--輸入人工客服進入咨詢了解。

熱點內容
s盒演算法 發布:2025-01-10 14:16:42 瀏覽:640
c語言用二分法求方程 發布:2025-01-10 14:15:45 瀏覽:218
廣場舞加密 發布:2025-01-10 14:13:21 瀏覽:519
網路密碼顯示低安全性是什麼意思 發布:2025-01-10 14:11:49 瀏覽:780
恥辱2博士保險箱密碼是多少 發布:2025-01-10 14:11:41 瀏覽:98
如何把伺服器搭在自己電腦 發布:2025-01-10 14:10:57 瀏覽:583
水晶可以存儲 發布:2025-01-10 14:09:35 瀏覽:388
一級腳本號 發布:2025-01-10 14:08:06 瀏覽:531
知乎冷數據存儲 發布:2025-01-10 14:07:10 瀏覽:603
資料庫的列名 發布:2025-01-10 14:03:39 瀏覽:523