一.我们先在XML当中自定义一个webview(Second_layout.xml)

代码如下:

  <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".SecondActivity"
android:background="@drawable/ic_launcher">
<WebView
android:id="@+id/webView" android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

可以看到,这里我们使用了现行布局以及WebView控件,tools:context=".SecondActivity"告诉我们这个控件是定义在第二个主活动当中的。这个控件的唯一标识符是:@+id/webView。这个标识符有利于我们在第二个主活动当中对这个控件的布局进行调用。这样,我们的XML代码就写好了,是不是很简单呢?嘿嘿,下面我们进行第二个主活动的编写(当然您也可以使用第一个主活动当中编写Java代码来进行控件背后的业务逻辑的实现,笔者只是在第二个主活动当中进行了实现,并无实质上的区别哦!)

二.开始主活Java代码业务逻辑实现(SecondActivity.java)

首先我们开始导入必要的包,没有导入这些包的话,程序就会报错哦!需要导入的包有:

 package com.example.lenovo.activitytest;

 import android.net.http.SslError;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.SslErrorHandler;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

然后开始主活动(或者说第二个活动也可以)的编写!这里我们继承的是AppCompatActivity这个类:

  public class SecondActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
init();
} private void init(){
webView = (WebView) findViewById(R.id.webView);
//需要加载的网页的url
webView.loadUrl("https://www.baidu.com");
WebSettings settings = webView.getSettings();
// 如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
settings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
});}}

利用这种方法的话,就可以十分容易地实现对我们网页的访问了!是不是很激动了呢?但是我们可以看看我们WebView控件的代码后面加载的是https协议所对应的网站,但是仅应用这些代码我们是只能够实现在APP当中查看具有http协议的网站,如果您只想访问具有http协议的网站,那么这就够咯。不过您要是想要实现访问具有https协议的网站的话,我们还必须在onCreate方法下面加上这一段代码了!:

       webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
//等待证书响应
handler.proceed();
}
});

这个时候软件后面的逻辑就全部编写完毕了,但是当程序进行运行的时候,Android stuidio也不会报错,可我们打开我们的APP一看就会发现我们还是打不开网页的,APP上会显示NET::ERR_CACHE_MISS的错误,因此我们来到程序编写的最后一步,来华丽的实现我们的webview控件的编写。

三.在Manifest.xml当中注册

我们只需要在Manifest.xml文件下面,webview加载网页时提示NET::ERR_CACHE_MISS的错误,原因很简单,就是没有添加网络访问的权限,在AndroidManifest.xml中加下就好了,如下:

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

这样的话,就可以让安卓应用进行肆无忌惮地访问网站啦!

四.实现效果如下:

怎么样,还算简单吧!嘿嘿

安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法的更多相关文章

  1. 安卓开发学习笔记(三):Android Stuidio无法引用Intent来创建对象,出现cannot resolve xxx

    笔者在进行安卓开发时,发现自己的代码语法完全没有问题.尤其是创建intent对象的时候,语法完全是正确的,但是Android Stuidio却显示报错,Intent类显示为红色,如图所示: 代码如下所 ...

  2. HCNP学习笔记之史上最全华为路由器交换机配置命令大合集

    先来一张思科和华为命令的对照表: 史上最全华为路由器交换机配置命令大合集,熟练掌握下面的华为路由器交换机配置知识点,你只需花几分钟的时间就能明白华为路由器交换机配置.交换机的配置命令等等. 华为路由器 ...

  3. 安卓开发学习笔记(七):仿写腾讯QQ登录注册界面

    这段代码的关键主要是在我们的相对布局以及线性布局上面,我们首先在总体布局里设置为线性布局,然后再在里面设置为相对布局,这是一个十分常见的XML布局模式. 废话不多说,直接上代码:一.activity. ...

  4. wxWidgets学习笔记——在屏幕上画简单的图形和文字

    在屏幕上画简单图形和显示图片.处理简单鼠标键盘事件 /*************************************************************** * Name: M ...

  5. 【转】Pro Android学习笔记(十六):用户界面和控制(4):ImageView控件

    目录(?)[-] XML片段 代码设置ImageView ImageView是基础的控件,它是android.widget.ImageView的继承类. XML片段      <LinearLa ...

  6. python学习笔记五 模块上(基础篇)

    模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...

  7. 安卓开发学习笔记(四):Android Stuidio无法实现隐式Intent是为什么?

    一.首先检查我们的代码: FirstActivity.java(主活动程序当中的代码):Button3监听器后面的代码就是我们隐式Intent的业务逻辑所在了,大家可以往下面看看,大概在代码的第57行 ...

  8. MongoDB学习笔记五—查询上

    数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...

  9. 安卓开发学习笔记(二):如何用Android Stuidio在res资源下创建xml视图文件

    笔者在看了相关的教程之后发现教程当中的资源已经过时了.当我们在创建了一个新的空白的工程之后,会发现其文件夹下面的分文件夹目录和官方的教程文件结构完全不同,因此会引起很多误解.笔者使用的是最新版的And ...

随机推荐

  1. 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)

    论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...

  2. mysql记录执行的SQL语句

    show variables like "general_log%"; SET GLOBAL general_log = 'ON';SET GLOBAL general_log = ...

  3. kafka写入hdfs

    碰到的问题 (1)线程操作问题,因为单机节点,代码加锁就好了,后续再写 (2) 消费者写hdfs的时候以流的形式写入,但是什么时候关闭流就是一个大问题了,这里引入了   fsDataOutputStr ...

  4. Ubuntu 下使用 Nginx 部署 .NET Core 2.0 网站

    前言 本文介绍如何在 Ubuntu 16.04 服务器上安装 .NET Core 2.0 SDK.创建项目与发布,并使用 Nginx 部署 .NET Core 2.0 Web 项目. 安装 .NET ...

  5. 玩转GET 和 POST

    HTTP 基本概念 HTTP Request Methods GET.POST 专业名称是 HTTP Request Methods.但 HTTP Request Methods 不只是 GET 和 ...

  6. SSM框架搭建后在tomcat部署报错lineNumber: 15; columnNumber: 59; 必须为元素类型 "beans" 声明属性 "xmlns"

    删除applicationContext.xml中的文件头上的这个就可以<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" &q ...

  7. Linux中jdk的安装配置

    1.下载jdk安装包 2.解压文件:tar -zxvf jdk-8u211-linux-x64.tar.gz 3.编辑环境变量:vi /etc/profile 4.在环境变量文末添加三行: expor ...

  8. java编程(1)——servlet和Ajax异步请求的接口编程(没有调用数据库的数据)

    编程应用背景: 使用HttpServlet接口来编写一个动态登录的接口(需要在Tomcat容器发布) 登录的 LoginSample 类代码: package com.zhang.java; publ ...

  9. C# 去除\0

    在做项目的时候遇到了这种情况,如图 这个字符串包含了好多的\0,等你放大查看的时候又什么都不显示,十分惹人烦,哈哈 网上有的解决办法说 tmpStr.TrimEnd("\0");但 ...

  10. ftp无法上传问题

    1.背景 ftp服务端和客户端一直未做任何改动,无法上传属于突发状态,除此客户端外其他客户端上传正常 客户端(SunOS系统)可以正常连接ftp的xxx21端口,但是传输数据(文件)时无法正常传输 上 ...