安卓开发学习笔记(五):史上最简单且华丽地实现Android Stutio当中Webview控件https/http协议的方法
一.我们先在xml当中自定义一个webview(second_layout.xml)
代码如下:
1 <?xml version="1.0" encoding="utf-8"?> 2 <linearlayout 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 android:orientation="vertical" 8 tools:context=".secondactivity" 9 android:background="@drawable/ic_launcher"> 10 <webview 11 android:id="@+id/webview" 12 13 android:layout_width="match_parent" 14 android:layout_height="match_parent" /> 15 </linearlayout>
可以看到,这里我们使用了现行布局以及webview控件,tools:context=".secondactivity"告诉我们这个控件是定义在第二个主活动当中的。这个控件的唯一标识符是:@+id/webview。这个标识符有利于我们在第二个主活动当中对这个控件的布局进行调用。这样,我们的xml代码就写好了,是不是很简单呢?嘿嘿,下面我们进行第二个主活动的编写(当然您也可以使用第一个主活动当中编写java代码来进行控件背后的业务逻辑的实现,笔者只是在第二个主活动当中进行了实现,并无实质上的区别哦!)
二.开始主活java代码业务逻辑实现(secondactivity.java)
首先我们开始导入必要的包,没有导入这些包的话,程序就会报错哦!需要导入的包有:
1 package com.example.lenovo.activitytest; 2 3 import android.net.http.sslerror; 4 import android.os.bundle; 5 import android.support.v7.app.appcompatactivity; 6 import android.webkit.sslerrorhandler; 7 import android.webkit.websettings; 8 import android.webkit.webview; 9 import android.webkit.webviewclient;
然后开始主活动(或者说第二个活动也可以)的编写!这里我们继承的是appcompatactivity这个类:
1 public class secondactivity extends appcompatactivity { 2 private webview webview; 3 @override 4 protected void oncreate(bundle savedinstancestate) { 5 super.oncreate(savedinstancestate); 6 setcontentview(r.layout.second_layout); 7 init(); 8 } 9 10 private void init(){ 11 webview = (webview) findviewbyid(r.id.webview); 12 //需要加载的网页的url 13 webview.loadurl("https://www.baidu.com"); 14 websettings settings = webview.getsettings(); 15 // 如果访问的页面中要与javascript交互,则webview必须设置支持javascript 16 settings.setjavascriptenabled(true); 17 webview.setwebviewclient(new webviewclient(){ 18 public boolean shouldoverrideurlloading(webview view, string url){ 19 view.loadurl(url); 20 return true; 21 } 22 });}}
利用这种方法的话,就可以十分容易地实现对我们网页的访问了!是不是很激动了呢?但是我们可以看看我们webview控件的代码后面加载的是https协议所对应的网站,但是仅应用这些代码我们是只能够实现在app当中查看具有http协议的网站,如果您只想访问具有http协议的网站,那么这就够咯。不过您要是想要实现访问具有https协议的网站的话,我们还必须在下面加上这一段代码了!:
1 webview.setwebviewclient(new webviewclient() { 2 @override 3 public void onreceivedsslerror(webview view, sslerrorhandler handler, sslerror error) { 4 //等待证书响应 5 handler.proceed(); 6 } 7 });
这个时候软件后面的逻辑就全部编写完毕了,但是当程序进行运行的时候,android stuidio也不会报错,可我们打开我们的app一看就会发现我们还是打不开网页的,app上会显示net::err_cache_miss的错误,因此我们来到程序编写的最后一步,来华丽的实现我们的webview控件的编写。
三.在manifest.xml当中注册
我们只需要在manifest.xml文件下面,webview加载网页时提示net::err_cache_miss的错误,原因很简单,就是没有添加网络访问的权限,在androidmanifest.xml中加下就好了,如下:
1 </application> 2 <uses-permission android:name="android.permission.internet" />
这样的话,就可以让安卓应用进行肆无忌惮地访问网站啦!
四.实现效果如下:
怎么样,还算简单吧!嘿嘿
下一篇: 艾迪王国什么手机能玩 适配手机型号一览表