Android之WebView

  • 加载网页

  • 加载url

  • 加载html代码

  • native和JavaScript相互调用

  • 加载网络url(webview.loadUrl)

  • 加载本地url(webview.loadUrl)

  • 加载html代码(webview.loadData)

  • 网页的前进后退

  • webview.canGoBack()能不能返回

  • webview.goBack()

  • webview.canGoForward()

  • webview.goForward()

  • webview.canGoBackOrForward
    Android之WebView_第1张图片

WebViewActivity以及xml文件

package com.example.test0508;

import androidx.appcompat.app.AppCompatActivity;

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

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        mWebView = findViewById(R.id.wv);
        //加载本地的url,静态文件
        //mWebView.loadUrl("file:///android_asset/text.html");

        //js支持
        mWebView.getSettings().setJavaScriptEnabled(true);

        //设置浏览器
        mWebView.setWebViewClient(new MyWebViewClient());

        //随着页面加载改变标题
        mWebView.setWebChromeClient(new MyWebChromClient());

//        mWebView.evaluateJavascript();

        //加载网络的url
        mWebView.loadUrl("https://m.baidu.com");


    }

    /**
     * 监听返回键,如果能返回就返回一级,重写onKeyDown
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()){
            //如果能回退,就回退一级
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    class MyWebViewClient extends WebViewClient{
        //在内部加载url,不跳转
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
            view.loadUrl(request.getUrl().toString());
            return true;
        }


        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            Log.d("WebView","onPageStarted...");
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(view, url);
            Log.d("WebView","onPageFinished...");
//            mWebView.loadUrl("JavaScript:alert('hello')");
            mWebView.evaluateJavascript("JavaScript:alert('hello')",null);
        }
    }
    class MyWebChromClient 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);
        }
    }
}

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    >
    <WebView
        android:id="@+id/wv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
    />
</LinearLayout>

你可能感兴趣的:(Android)