中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WebView怎么在Android 中使用

發布時間:2021-01-25 15:33:34 來源:億速云 閱讀:218 作者:Leah 欄目:開發技術

WebView怎么在Android 中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

加載 URL (網絡或者本地 assets 文件夾下的 html 文件)
加載 html 代碼
Native 和 JavaScript 相互調用

加載網絡 URL

webview.loadUrl(https://www.baidu.com/);

加載 assets 下的 html 文件

webview.loadUrl(file:///android_asset/test.html);

加載 html 代碼

// 兩個代碼差不多
// 偶爾出現亂碼
webview.loadData();
// 比上面的好一些, 可以友好解決編碼問題
webview.loadDataWithBaseURL();

網頁的前進后退

// 網頁是否可以后退
webview.canGoBack();
// 網頁進行后退
webview.goBack();
// 網頁是否可以前進
webview.canGoForward();
// 網頁進行前進
webview.goForward();
// 網頁是否可以前進/后退 steps 步
webview.canGoBackOrForward(int steps);
// 網頁進行前進/后退 steps 步
webview.goBackOrForward(int steps);

執行 JS 代碼.

webview.loadUrl("javascript:alert('Hello world!')");
webview.evaluateJavascript("javascript:alert('Hello world!')", null);

2. 加載網頁

建立一個最簡單的 html 文件

WebView怎么在Android 中使用

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>

加載網頁上的頁面

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");
  // 加載網頁 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);
  }
 }
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卢湾区| 南雄市| 自治县| 田阳县| 灵武市| 石阡县| 祁东县| 普兰店市| 塘沽区| 吴旗县| 将乐县| 应用必备| 汉寿县| 呼伦贝尔市| 宜丰县| 周至县| 奉化市| 碌曲县| 历史| 正镶白旗| 闽侯县| 武胜县| 盐池县| 夏河县| 岳普湖县| 克东县| 凤台县| 固镇县| 鹤峰县| 富锦市| 微博| 大渡口区| 孝感市| 乌兰浩特市| 伊金霍洛旗| 金秀| 勐海县| 宁波市| 涿鹿县| 卢氏县| 中宁县|