android中使用WebView请求网页

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

猜你喜欢

转载自www.cnblogs.com/modou/p/10306980.html
今日推荐