請求網頁首先需要訪問網絡的權限,在AndroidManifest.xml添加如下內容:
1 <uses-permission android:name="android.permission.INTERNET" /> 2 3 <application 4 ...... 5 android:usesCleartextTraffic="true" 6 ......> 7 ...... 8 </application>
第5行是指允許訪問未加密請求,從android9.0開始,默認是不允許訪問未加密請求,不添加這行內容,訪問時會報err_cleartext_not_permitted的錯誤
然后添加主Activity
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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=".MainActivity"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.constraint.ConstraintLayout>
添加了一個WebView控件,並且分別設置寬高度占滿整個屏幕
MainActivity.java:
1 package com.example.chenrui.app1; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.webkit.WebView; 6 import android.webkit.WebViewClient; 7 8 public class MainActivity extends AppCompatActivity { 9 10 @Override 11 protected void onCreate(Bundle savedInstanceState) { 12 super.onCreate(savedInstanceState); 13 setContentView(R.layout.activity_main); 14 15 WebView webView = findViewById(R.id.webview); 16 webView.getSettings().setJavaScriptEnabled(true); 17 webView.setWebViewClient(new WebViewClient()); 18 webView.loadUrl("http://www.baidu.com/"); 19 } 20 }
第16行代碼是指允許在打開的網頁上執行javascript
第17行代碼是指如何有鏈接,進入鏈接使用當前WebView打開,而不是使用外置的默認瀏覽器打開鏈接
第18行代碼就是要加載的網頁了
執行的效果:

上面的例子有一個問題,就是返回鍵不能控制網頁后退,而是直接調用默認的finish()退出了當前Activity,下面我們修改一下java類,允許通過返回鍵控制網頁后退,注意紅色部分為修改代碼:
package com.example.chenrui.app1; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; public class MainActivity extends AppCompatActivity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); webView = findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.setWebViewClient(new WebViewClient()); webView.loadUrl("http://www.baidu.com/"); } @Override public void onBackPressed() { if(webView.canGoBack()) { webView.goBack(); } else { super.onBackPressed(); } } }
上面是重寫了onBackPressed()方法,如果網頁有歷史頁面就跳轉到上一個頁面,否則就退出。
