原创 Android之WebView用法

2022-1-18 18:06 928 16 16 分类: 软件与OS 文集: android studio

除了HTTP通信与 Socket 通信两种主要的网络技术外,在 Android 中还提供了一种加载和显示网页的技术—WebView。这可以让我们去处理一些特殊的需求,比如像微信那样在应用程序里展示网页,或者说使用 WebView 来为 UI界面布局。

WebView 的基本使用

WebView的使用非常简单,新建一个项目 internet,修改 activity_main.xml 中的代码,加入一个WebView 控件。WebView控件是一个新的控件,用于显示网页,为了可以在 Activity 中获取WebView 而设置了 id,代码如下

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. tools:context=".MainActivity">
  8. <WebView
  9. android:id="@+id/web"
  10. android:layout_width="match_parent"
  11. android:layout_height="match_parent"/>
  12. </RelativeLayout>

  Activity的内容很简单,只是通过findViewById()方法获取了WebView实例,并使用webView.loadUrl(http://www.baidu.com)将链接“http://www.baidu.com”(百度首页)加载到了布局中,代码如下:

  1. package com.rfstar.webviewtest;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import android.os.Bundle;
  4. import android.webkit.WebSettings;
  5. import android.webkit.WebView;
  6. import android.webkit.WebViewClient;
  7. public class MainActivity extends AppCompatActivity {
  8. @Override
  9. protected void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_main);
  12. WebView webView=(WebView)findViewById(R.id.web);
  13. //获取WebSettings类的实例,此类用于对WebView加载的网页进行设置
  14. WebSettings webSettings=webView.getSettings();
  15. //使WebView可以使用JavaScript
  16. webSettings.setJavaScriptEnabled(true);
  17. //请求加载百度,并交由Webclient去处理
  18. webView.loadUrl("http://wwww.baidu.com");
  19. //使用WebViewClient设置监听并处理WebView的请求事件
  20. webView.setWebViewClient(new WebViewClient()
  21. {
  22. @Override
  23. public boolean shouldOverrideUrlLoading(WebView view,String url)
  24. {
  25. //根据url真正去加载网页的操作
  26. view.loadUrl(url);
  27. //在当前WebView中打开网页,而不在浏览器中
  28. return true;
  29. }
  30. });
  31. }
  32. }

Activity 中的操作并不多,正如注释中描述的,WebViewgetSettings()方法获取Websettings 的实例,然后去设置一些属性。此处只是调用了 setJavaScriptEnabled()方法来WebView 可以使用 JavaScript 脚本。然后使用 webView.loadUrl("http//www.baidu.com")来加网页但是此时并不是真正执行网页的加载动作,只是发送了一个请求,真正的动作是通WebClient来完成的。最后实现WebViewsetWebViewClient()方法,在名内部类中处理真正的加载操作。

完成这些操作之后,在 AndroidManifest.xml中加入网络权限

<uses-permission android:name="android.permission.INTERNET"/>

注意:从Android9.0(API级别28)开始,默认情况下禁用明文支持。因此httpurl均无法在webview中加载。

解决办法:

manifestapplication节点添加

android:usesCleartextTraffic="true"

添加后如下:

运行程序,就可以打开一个百度页面了,如下图所示。

这里需要注意保证手机有网络连接,使用模拟器时需要保证计算机有网络连接

android studio工具及手机模拟器以及更多工程源代码下载请前往微信公众号:大鸟科创空间,回复:android studio即可获取。

作者: 大鸟科创空间, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3949041.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

给作者打赏,鼓励TA抓紧创作!

赞赏支持
点赞 16
赞赏0

文章评论0条评论)

登录后参与讨论
相关推荐阅读
大鸟科创空间 2022-02-14 17:42
生日快乐HTML浪漫网页制作源码
对象生日快到了,赶快下载去给ta一个惊喜吧。解压后里面有整个项目和使用说明。这个代码有背景音乐(可以自己更改),有自转相册(可以改成对象照片)如下是效果截图,用鼠标滑动界面会有爱心划过,下滑可以循环播...
大鸟科创空间 2022-01-07 14:18
Android之Socket实例
    Socket(套接字)是对 TCP/IP 协议的封装和应用,根据底层封装协议的不同,Socket 的类型可以分为流套接字(streamsocket)和数据报套接字(data...
大鸟科创空间 2021-12-24 14:38
Android之本地广播的使用
前面我们发送和接收的广播全部属于系统全局广播,即发出的广播可以被其他任何应用程序接收到,并且我们也可以接收来自于其他任何应用程序的广播。这样就很容易会引起安全性的问题,比如说我们发送的一些携带关键性数...
大鸟科创空间 2021-12-15 12:50
自定义广播实例
我们应该已经学会了通过广播接收者来接收系统广播的内容,但是在实际开发中,仍需要自定义一些广播。下面我们就来讲解如何在应用程序中发送自定义的广播。发送广播很简单,只需要声明一个意图,然后使用Contex...
大鸟科创空间 2021-12-07 13:04
Android之动态注册广播实例
Android内置了很多系统级别的广播,我们可以在应用序中通过监听这些广播来得到各种系统的状态信息,比如手机开机完成后会发出一条广播、电池的电最发生变化会发出一条广播、时间或时区发生改变也会发出一条广...
我要评论
0
16
1
2
3
4
5
6
7
8
9
0
关闭 热点推荐上一条 /4 下一条