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()方法,如果網頁有歷史頁面就跳轉到上一個頁面,否則就退出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM