请求网页首先需要访问网络的权限,在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()方法,如果网页有历史页面就跳转到上一个页面,否则就退出。