详解android 用webview加载网页(https和http)

yizhihongxing

以下是详解"Android用WebView加载网页(HTTPS和HTTP)"的完整攻略。

1. 添加权限

一般情况下,Android App通过Http请求一个网页,需要在AndroidManifest.xml中添加INTERNET权限。

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

当你的请求链接是HTTPS,则需要添加以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2. 准备WebView

当我们请求WebView加载网页时,一定需要在布局中定义一个WebView组件。

<WebView
    android:id="@+id/wv_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

接着,在代码中找到这个WebView,并设置它的一些基本属性,如:

WebView webView = (WebView) findViewById(R.id.wv_content);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);

通常来讲,WebView的默认行为是禁止JavaScript运行,因此,我们需要在代码中将JavaScript设置为启用。此外,由于浏览器缓存数据已经存储在DOM存储中,因此我们可以将WebView中客户端的状态保持在一定程度上,以提高用户的使用体验。

3. 载入URL

在这一步骤中,我们需要将URL加载到已准备好的WebView中。我们可以通过两种不同的方式来完成。

3.1 使用WebView加载URL

如果你需要从一个Activity中打开一个网页,那么下面的代码会帮助你完成这个过程:

webView.loadUrl(url);

3.2 使用Intent加载URL

如果你需要从一个Activity切换到另一个Activity并且在其中打开一个URL,则使用Intent跳转。

Intent intent = new Intent(this, WebViewActivity.class);
intent.putExtra("loadUrl", url);
startActivity(intent);

在新的Activity中,可以使用以下代码来加载网页:

webview.loadUrl(getIntent().getStringExtra("loadUrl"));

4. HTTPS的证书问题

当你使用HTTPS协议来请求一个网页时,你还需要特殊处理一些证书问题。

大多数时候,这些证书问题都是由于https链接中包含了不受信任的自签名证书而引起的。如果想要绕过这些证书问题,我们可以使用下面的代码来忽略证书验证:

WebView webView = (WebView) findViewById(R.id.wv_content);
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
        handler.proceed(); // 忽略证书
    }
});

在这个代码块中,我们创建一个WebViewClient对象,并重写onReceivedSslError方法,其中我们调用传入的SslErrorHandler对象的proceed()方法来绕过证书错误。

5. HTTP协议中的重定向

在HTTP协议中,我们经常会遇到重定向的情况。如果你想要在在WebView中正确处理重定向,你需要重写WebViewClient中的shouldOverrideUrlLoading()方法:

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

在这个方法中,我们让WebView处理URL并返回一个true值通知WebView处理该请求。

以上就是详解"Android用WebView加载网页(HTTPS和HTTP)"的完整攻略。希望对你有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解android 用webview加载网页(https和http) - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Windows无法自动将IP协议堆栈绑定到网络适配器 的解决办法

    Windows无法自动将IP协议堆栈绑定到网络适配器的解决办法 如果你在Windows中遇到了”Windows无法自动将IP协议堆栈绑定到网络适配器”的错误信息,那么你并不是孤单的。这个错误信息通常出现在你尝试连接互联网或者内部网络时,而导致连接失败。 产生这个问题的可能原因 首先,在排除这种问题时,我们需要先考虑一些可能导致这个错误信息出现的因素。以下是一…

    其他 2023年3月28日
    00
  • Java虚拟机内存区域划分详解

    Java虚拟机内存区域划分详解 Java虚拟机(JVM)内存区域划分是Java程序运行时内存管理的基础,了解这些内存区域的划分对于理解Java程序的内存使用和性能优化非常重要。本攻略将详细讲解Java虚拟机内存区域划分,并提供两个示例说明。 1. Java虚拟机内存区域划分 Java虚拟机内存区域划分主要包括以下几个部分: 1.1. 程序计数器(Progra…

    other 2023年8月1日
    00
  • java中通过网卡名称获取IP地址

    Java中通过网卡名称获取IP地址的攻略 在Java中,可以通过使用NetworkInterface类和InetAddress类来获取指定网卡名称的IP地址。下面是详细的步骤: 导入必要的类: import java.net.InetAddress; import java.net.NetworkInterface; import java.net.Sock…

    other 2023年7月31日
    00
  • JS input文本框禁用右键和复制粘贴功能的代码

    要禁用JS输入框的右键和复制粘贴功能,可以借助于HTML5的一些属性和JavaScript中的事件。以下是禁用JS文本框右键和复制粘贴功能的代码攻略。 1. 禁止右键菜单 我们可以利用oncontextmenu事件,在用户右键点击输入框时,禁止默认的右键菜单弹出。 <input type="text" id="input&…

    other 2023年6月27日
    00
  • MySQL ALTER命令使用详解

    MySQL ALTER命令使用详解 什么是ALTER命令? ALTER命令是MySQL数据库中常用的一条命令,用于修改已存在的表格的结构和定义,可操作的修改种类包括: 修改表格名称 添加、修改、删除表格字段 添加、删除表格索引 添加、删除表格主键 修改表格引擎类型等 ALTER命令使用方式 ALTER命令的使用方式如下: ALTER TABLE 表名 ADD…

    other 2023年6月25日
    00
  • 华为畅享6S值得买吗?华为畅享6S全面深度评测图解

    华为畅享6S值得买吗?华为畅享6S全面深度评测图解 华为畅享6S是一款定位中端的手机。那么,这款手机是否值得购买呢?本文将从外观、性能、拍照以及其他方面对华为畅享6S进行全面深度评测,为大家进行详细介绍。 外观设计 华为畅享6S采用了6英寸的IPS全面屏,屏占比较高,给人带来不错的视觉体验。但是由于屏幕较大,单手操作时比较不方便。 机身后面是千纸鹤图案,看上…

    other 2023年6月27日
    00
  • grafana设置中文

    Grafana设置中文 Grafana是一个流行的开源数据可视化平台,它可以帮助用户快速、方便地可视化数据。然而,在默认情况下,Grafana使用英文作为其用户界面语言。对于非英语用户来说,这可能会造成一些不便。幸运的是,Grafana提供了设置中文的选项,下面就让我们来详细了解一下如何进行设置。 1. 下载中文语言包 首先,你需要从官方网站下载Grafan…

    其他 2023年3月29日
    00
  • arp侦查工具netdiscover

    ARP侦查工具Netdiscover攻略 Netdiscover是一款基于ARP协议的侦查工具,可以用于发现局域网内的主机和设备。它可以扫描整个网络,识别活动主机的IP地址和MAC,并提供有关每个主机的详细信息。本文将介绍如何使用Netdiscover进行ARP侦查,并提供两个示例说明。 步骤1:安装Netdiscover Netdiscover可以在Lin…

    other 2023年5月6日
    00
合作推广
合作推广
分享本页
返回顶部