【學習筆記-Android】(十三) 網絡篇(四)——WebView組件

網絡篇筆記鏈接:
一、HttpURLConnection
二、Volley框架 + 使用Gson解析json數據
三、OkHttp3框架 + 使用Gson解析json數據
四、WebView組件
五、Android 9.0以上不能訪問網絡問題解決方法

===============================================================


提示:Android 9.0 版本之後的網絡訪問有問題的請看我的另一篇文章。
五、Android 9.0以上不能訪問網絡問題解決方法


WebView組件是用來瀏覽網頁的。使用方法也很簡單。
1、在佈局文件中加入下面的代碼

<WebView
        android:id="@+id/wv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

2.1、在java文件中使用

webView.load(url);

2.2、重寫setWebViewClient方法,不然系統會調用自帶瀏覽器打開網頁

webView.setWebViewClient(new WebViewClient(){
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                        view.loadUrl(request.getUrl().toString());
                        return true;
                    }
                });

3、因爲要訪問互聯網,需要在AndroidManifest.xml文件中加入網絡權限

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

實例:
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/wv"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</LinearLayout>

MainActivity.java

package com.t.component_webview;

import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {
    private EditText etUrl;
    private Button button;
    private WebView wv;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //獲取組件
        etUrl = (EditText) findViewById(R.id.et_url);
        button = (Button) findViewById(R.id.button);
        wv = (WebView) findViewById(R.id.wv);

        //按鈕的監聽事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //從編輯框中獲取url
                final String url = etUrl.getText().toString();

                //重寫setWebViewClient方法,不然系統會調用自帶瀏覽器打開網頁
                wv.setWebViewClient(new WebViewClient(){
                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                        view.loadUrl(request.getUrl().toString());
                        return true;
                    }
                });

                //指定要加載的網頁
                wv.loadUrl(url);
                
                //默認情況下,WebView不支持javascript
                //讓webView支持javascript
                wv.getSettings().setJavaScriptEnabled(true);
                
                //上面的設置雖然支持了js,但是卻不支持js的alert()彈窗
                //設置webView支持js的alert()彈窗
                wv.setWebChromeClient(new WebChromeClient());
                
            }
        });

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章