刘 杰
(锦州师范高等专科学校,辽宁 锦州121000)
关键字:Android;Intent;WebView
随着各种智能终端用户的增长和技术的发展,智能手机、平板电脑、智能电视等移动设备的应用范围越来越广,利用各类App调用网页及数据传输成为很多用户的需求.为解决这一问题,移动平台提供了很多的解决方案,为各领域的工作提供了更加细分的基于不同专业化的信息内容.Android是专为移动设备开发的平台,应用非常广泛,随着技术的发展Android为实现不同调用网页的功能提供了两个方面的技术方案.如在App中需要跳转到其他浏览器来进行网页浏览,需要采用意图Intent方法来实现.Intent的方式不需要联网权限,因为请求网络显示网页的工作是在浏览器当中完成的,浏览器需要的权限与开发中的App无关,但在App中可以选择打开浏览器的类型.Intent缩短了用户在应用当中的时间,但会出现用户调转到浏览器之后不会回到App的问题.WebView方法是在自己的应用内,相当于在应用内部嵌入了一个Mini浏览器.WebView方法可以直接显示Web页面,也可以直接用Html和做布局Javascript交互调用.WebView方法调用网页需要访问网络资源,因此必须在清单文件中增加语句 “Android.permission.internet”,作用是允许使用连接Internet,否则会出现 “Web page not available”错误或App无法运行的后果.Android平台的两种技术解决方案各有优缺点,在开发过程中需要根据需求进行判断选择.
Intent可以理解为不同组件通信的媒介或者信使,Android四大组件中的三种核心组件Activity、Service和Broadcast Receiver都需要使用Intent来进行激活,同时需要在清单文件中进行注册[1].Intent的主要作用是在相同或不同的应用程序间或组件间的后期运行时进行绑定.对于不同的组件,Android系统通过使用不同方法提供Intent发送机制对组件进行激活.
在Intent对象中包含有Component Name(组件名)、Action (行为)、Data(数据)、Category(类别)、Extra(额外)、Flags(标记)等信息.
Action是一个字符串,用来表示将要执行的动作.
WebView组件是专门用来浏览网页的,其使用方法既可以在XML布局文件中使用<WebView>添加标记,又可以在Java文件中通过New关键字创建[2].
添加WebView组件后,就可以用该组件提供的方法来执行浏览器操作了.WebView组件提供的常用方法既可以加载指定URL对应的网页,又可以将指定的字符串数据或基于URL指定的数据加载到浏览器中.
Android中的Intent有两个作用:(1)用来启动其他新的Activity;(2)作为传递数据和事件的桥梁.语句Android.intent.action.view用于显示用户的数据,并会根据设置的用户的数据类型动作打开相应的浏览器来代替Activity.
利用意图Intent调用网页的应用既可以调用默认浏览器,又可以调用其他浏览器.这是UC浏览器、Opera、QQ浏览器等很多开发者经常使用的.使用App时,当触发事件发生时就可以调用手机浏览器打开特定网页,网址可以替换成需要的网址.
调用默认浏览器一般使用打开链接或使用WebView组件两种方式来传递数据.
2.1.1 打开链接方式
打开链接方式首先创建一个意图对象,在意图对象中设置标准Activity动作Action_view将数据显示给用户,相对应的数据为将要进行链接的地址,然后调用Intent中的SetClassName方法跳转到不同Applicaiton的Activity,最后使用Intent来启动Activity并传递参数.如下语句所示:
Intent intent = new Intent(Intent.Action_View,ri.parse(" 此处填链接"));
Intent.setClassName("当前activity路径"," 跳转activity路径");getContext().startActivity(intent);
2.1.2 打开本地网页
Intent intent=new Intent();//创建一个意图对象
intent.setAction("android.intent.action.View");//设置意图的动作为.action.View
Uri CONTENT_URI_BROWSERS = Uri.parse("content://本地地址");//设置链接的地址
intent.setData(CONTENT_URI_BROWSERS);//设置意图的数据为CONTENT_URI_BROWSERS
intent.setClassName(" 当前activity路径"," 跳转activity路径");
startActivity(intent);
在Android开发中,使用WebView组件可以很方便地实现Web浏览器的功能.使用WebView不但可以更改网页展现的内容及样式,还可以实现部分功能的跨平台[3].WebView组件的作用是用来浏览网页的,和其他组件一样可以在布局文件中设置,也可以通过Java代码调用Javascript进行创建.
2.2.1 在WebView中显示打开网页
要实现打开网页时不调用系统浏览器,而是在本WebView中显示的功能,首先需要在布局文件中添加 WebView组件,并设置参数,然后在应用的Activity的OnCreate()方法中获取布局中的WebView组件,并为其指定加载的网页的URL地址.使用WebView组件不仅可以顺利浏览已有的网页,还可以实现加载HTML代码的功能.加载HTML代码可以让界面更加美观,可以让开发更加简单、快捷.实现该功能主要用到了LoadDataWithBaseURL()方法,基本的语法格式如下:
public void loadDataWithBaseURL(String baseUrl,String data,String mimeType,String encoding,String historyUrl)
2.2.2 通过Java代码调用Javascript实现Web浏览器的功能
在默认情况下,WebView组件是不支持Javascript的运行的,但是在运行某些不得不使用Javascript代码的网站时,我们需要使用语句来允许Javascript的运行,实现以上功能只需要两个步骤即可[4]:
WebView userView= (WebView)findViewById(R.id.conten);//在布局文件中获取 WebView对象
WebSettings userSettings=userView.getSettings();//通过 WebView中的getSettings方法获得一个WebSettings对象
userSettings.setJavaScriptEnabled(true);//设 置 允许Javascript的运行
接下来就可以指定要加载的网页进行浏览了.
2.2.3 实现网络浏览器的前进、后退等功能
一个功能实用的网络浏览器不仅需要支持Javascript,还要包含前进、后退等功能.利用WebView组件可以灵活实现这些功能[5].
(1)按返回键时,不退出程序而是返回上一浏览页面:
userView.goBack();
如果在页面中存在链接,点击该链接在当前浏览器页面中响应不打开新的浏览器页面去响应该链接,则必须覆盖 WebView组件中的WebViewClient对象[6].
(2)可以设置打开页面时,网页根据屏幕的尺寸自适应屏幕:
WebView userView = (WebView) findViewById(R.id.conten);
WebSettings userSettings = webView.getSettings();
userbSettings.setUseWideViewPort(true);//此 属性的作用是可任意进行比例缩放
userSettings.setLoadWithOverviewMode(true);//自适应屏幕
(3)设置WebSettings对象属性,使页面支持缩放:
WebSettings对象.setBuiltInZoomControls(true);
WebSettings对象 .setSupportZoom(true);
利用Intent调用网页只是Intent的其中一项功能,一般还需要配合其他组件的事件和方法.Android中的 WebView存在很大的兼容性问题,不仅仅是因为Android系统版本的不同对 WebView产生很大的差异,不同的厂商生产的ROM里面 WebView也存在着很大的差异,具体应用的过程中需要配合整个App的开发进行合理优化.利用以上两种方式都可以达到调用网页的目的,可以根据实际需求在开发中进行拓展.