Android 中 WebView 的基本用法詳解
加載 URL (網(wǎng)絡(luò)或者本地 assets 文件夾下的 html 文件)
加載 html 代碼
Native 和 JavaScript 相互調(diào)用
加載網(wǎng)絡(luò) URL
webview.loadUrl(https://www.baidu.com/);
加載 assets 下的 html 文件
webview.loadUrl(file:///android_asset/test.html);
加載 html 代碼
// 兩個代碼差不多 // 偶爾出現(xiàn)亂碼 webview.loadData(); // 比上面的好一些, 可以友好解決編碼問題 webview.loadDataWithBaseURL();
網(wǎng)頁的前進后退
// 網(wǎng)頁是否可以后退 webview.canGoBack(); // 網(wǎng)頁進行后退 webview.goBack(); // 網(wǎng)頁是否可以前進 webview.canGoForward(); // 網(wǎng)頁進行前進 webview.goForward(); // 網(wǎng)頁是否可以前進/后退 steps 步 webview.canGoBackOrForward(int steps); // 網(wǎng)頁進行前進/后退 steps 步 webview.goBackOrForward(int steps);
執(zhí)行 JS 代碼.
webview.loadUrl("javascript:alert('Hello world!')");
webview.evaluateJavascript("javascript:alert('Hello world!')", null);
2. 加載網(wǎng)頁
建立一個最簡單的 html 文件

WebViewActivity
package com.example.hello;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
public class WebViewActivity extends AppCompatActivity {
// 聲明
private WebView wb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
// 獲取
wb = findViewById(R.id.wb);
// 加載本地 html 文件
wb.loadUrl("file:///android_asset/test.html");
}
}
activity_web_view
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".WebViewActivity"> <WebView android:id="@+id/wb" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>

加載網(wǎng)頁上的頁面
package com.example.hello;
import androidx.appcompat.app.AppCompatActivity;
import android.annotation.SuppressLint;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class WebViewActivity extends AppCompatActivity {
// 聲明
private WebView wb;
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
// 獲取
wb = findViewById(R.id.wb);
// 加載本地 html 文件
// wb.loadUrl("file:///android_asset/test.html");
// 加載網(wǎng)頁 html 文件
// 支持 JS 和 DOM
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setDomStorageEnabled(true);
// 防止所有后打開默認瀏覽器
wb.setWebViewClient(new MyWebViewClient());
wb.setWebChromeClient(new MyWebChromeClient());
wb.loadUrl("https://www.baidu.com/");
}
/**
* 防止返回到之前的 Activity
*
* @param keyCode 按鍵
* @param event 事件
* @return true
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && wb.canGoBack()) {
wb.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
static class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.getUrl().toString());
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
Log.d("WebViewClient", "Page started...");
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
Log.d("WebViewClient", "Page Finished...");
}
}
/**
* 添加所有記錄和 Title
*/
class MyWebChromeClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
}
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
setTitle(title);
}
}
}

到此這篇關(guān)于Android 中 WebView 的基本用法的文章就介紹到這了,更多相關(guān)Android 中 WebView 用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Android6.0實現(xiàn)彈出Window提示框
這篇文章主要為大家詳細介紹了基于Android6.0實現(xiàn)彈出Window提示框,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-10-10
Android中ScrollView嵌套GridView的解決辦法
前些日子在開發(fā)中用到了需要ScrollView嵌套GridView的情況,由于這兩款控件都自帶滾動條,當(dāng)他們碰到一起的時候便會出問題,即GridView會顯示不全。下面小編給大家分享下解決方案,需要的朋友可以參考下2017-04-04
Android Handler內(nèi)存泄漏原因及解決方案
這篇文章主要介紹了Android Handler內(nèi)存泄漏原因及解決方案,幫助大家更好的理解和利用Android進行開發(fā),感興趣的朋友可以了解下2021-02-02
Android自定義view實現(xiàn)側(cè)滑欄詳解
之前一直沒有寫側(cè)滑菜單的實現(xiàn)方法,今天計劃補上。手機開發(fā)中,往往存在很多功能沒處放的問題。我們可能會把功能放入一個菜單列表,但現(xiàn)在一種流行的做法是側(cè)滑菜單2022-11-11
Android實現(xiàn)垂直進度條VerticalSeekBar
這篇文章主要為大家詳細介紹了Android實現(xiàn)垂直進度條VerticalSeekBar的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
Android使用post方式上傳圖片到服務(wù)器的方法
這篇文章主要介紹了Android使用post方式上傳圖片到服務(wù)器的方法,結(jié)合實例形式分析了Android文件傳輸?shù)南嚓P(guān)技巧,需要的朋友可以參考下2016-03-03

