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

以下是详解"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日

相关文章

  • ASP.NET 在下载文件时对其重命名的思路及实现方法

    ASP.NET 在下载文件时对其重命名,通常是需要在服务器端进行操作,也就是在 ASP.NET 的代码中实现。具体的思路和实现方法如下: 获取需要下载的文件名及文件路径。 这一步可以通过前端传递文件名及文件路径进行获取,或者根据业务规则,通过后台程序获取到需要下载的文件路径及对应文件名。 以前端传递方式为例,可以在前端使用 AJAX 技术,调用后台 API,…

    other 2023年6月26日
    00
  • CAD怎么使用构造线? CAD构造线画法

    CAD(计算机辅助设计)是一种广泛应用于工程和设计领域的软件工具,用于创建和修改数字模型。在CAD中,构造线是一种用于辅助绘图和设计的特殊线型。下面是关于如何使用构造线以及CAD构造线画法的详细攻略: 使用构造线的目的 构造线在CAD中的主要目的是辅助绘图和设计过程。它们通常用于以下几个方面:1. 辅助定位:构造线可以用于确定几何图形的位置和方向,帮助用户精…

    other 2023年8月6日
    00
  • IE6,IE7下js动态加载图片不显示错误

    针对IE6、IE7下js动态加载图片不显示的问题,其原因在于浏览器缓存机制的不同导致。在IE6、IE7下,如果通过js动态创建img元素并赋值src属性加载图片,那么图片会被浏览器缓存下来并在后续使用时从缓存中读取。由于IE6、IE7存在缓存机制的限制,导致图片不易被获取。 为解决上述问题,可以采用以下两种方式进行处理: 方式一:添加随机参数 通过添加随机参…

    other 2023年6月25日
    00
  • iPhone5s运行iOS10开发者预览版Beta8与iOS9.3.5速度对比评测

    首先,为了评测iPhone 5s运行iOS 10开发者预览版Beta8与iOS 9.3.5的速度对比,我们需要准备以下材料: 一台iPhone 5s; iOS 10开发者预览版Beta8系统文件; iOS 9.3.5系统文件; iTunes; 一台配有Mac操作系统的电脑; 闪存驱动器(可选)。 接下来,我们需要执行以下步骤: 步骤一:备份现有数据 首先,在…

    other 2023年6月26日
    00
  • 分享JavaScript 中的几种继承方式

    分享JavaScript 中的几种继承方式 为什么需要继承? 在编写代码的过程中,我们不可能每一次都从零开始写。很多时候,我们需要利用现有的代码来实现新的功能,这就是继承的一个重要应用场景。 我们之所以需要继承,是因为继承可以让我们复用代码,避免重复劳动和代码冗余。当我们需要对某一种对象进行扩展时,继承就是我们的好选择。 继承的几种方式 在JavaScrip…

    other 2023年6月26日
    00
  • 七款磁盘碎片整理软件大比拼 与下载

    七款磁盘碎片整理软件大比拼 磁盘碎片整理软件是电脑使用中的重要工具之一,可以有效地提高电脑的运行效率和速度。本文将介绍七款常用的磁盘碎片整理软件,并进行对比评测。同时,提供每款软件的下载链接,方便大家下载使用。 常见磁盘碎片问题 电脑使用一段时间后,硬盘中会存在大量的碎片文件。这些碎片文件的存在会导致硬盘读取数据的速度变慢,同时也会使得电脑的运行速度变慢。因…

    other 2023年6月27日
    00
  • 锐龙5 3600和酷睿i5-9600KF怎么选 锐龙5 3600和酷睿i5-9600KF对比介绍

    当选择锐龙5 3600和酷睿i5-9600KF之间的处理器时,可以考虑以下几个方面进行对比和评估: 性能对比 首先,我们可以比较它们的性能指标,包括核心数量、线程数量和主频。锐龙5 3600拥有6个核心、12个线程和3.6GHz的基础主频,而酷睿i5-9600KF则有6个核心、6个线程和3.7GHz的基础主频。从核心和线程数量上看,锐龙5 3600具有更多的…

    other 2023年10月17日
    00
  • JS日期和时间选择控件升级版(自写)

    下面我就为你详细讲解一下”JS日期和时间选择控件升级版(自写)”的完整攻略。 1. 背景介绍 本文主要介绍如何通过自己编写一个JavaScript日期和时间选择控件的方式,来实现对于日期和时间输入的便捷操作和规范化处理,提高用户使用体验。 2. 实现原理 该日期和时间选择控件的实现原理主要是基于JavaScript、HTML、CSS技术,包括以下几个步骤: …

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