原创 Android之WebView用法

2022-1-18 18:06 1692 25 25 分类: 软件与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

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

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
25
关闭 站长推荐上一条 /3 下一条