android中webview详解,Android 中 WebView 的基本用法详解

加载 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 文件

65e4df58c1914c2ab97cd8f9c66c7678.png

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

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

android:id="@+id/wb"

android:layout_width="match_parent"

android:layout_height="match_parent" />

5040ce4987f829d15b06447b44cfd14a.png

加载网页上的页面

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

}

}

}

4c1fcc16d2c6ea0287d84171e190157f.png

到此这篇关于Android 中 WebView 的基本用法的文章就介绍到这了,更多相关Android 中 WebView 用法内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值