zoukankan      html  css  js  c++  java
  • 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()方法,如果网页有历史页面就跳转到上一个页面,否则就退出。

  • 相关阅读:
    ABP框架理论研究总结(典藏版)
    ABP系列文章总目录:
    使用NServiceBus开发分布式应用
    shell脚本进阶 详解及其实例(一)
    linux模拟实现主机跨路由通信
    网络管理之基础知识详解
    RAID RAID 大揭秘~
    磁盘管理(一)磁盘结构
    如何在centos7上安装源码包
    压缩与解压缩
  • 原文地址:https://www.cnblogs.com/modou/p/10306980.html
Copyright © 2011-2022 走看看