Android Web App官方文档翻译第三章:WebView构建应用
- 格式:docx
- 大小:18.60 KB
- 文档页数:8
Android学习——WebView的⽤法WebView介绍Android WebView在Android平台上是⼀个特殊的View,基于webkit引擎、展现web页⾯的控件,这个类可以被⽤来在你的app中仅仅显⽰⼀张在线的⽹页,还可以⽤来开发浏览器。
WebView内部实现是采⽤渲染引擎来展⽰view的内容,提供⽹页前进后退,⽹页放⼤,缩⼩,搜索。
Android的Webview在低版本和⾼版本采⽤了不同的webkit版本内核,4.4后直接使⽤了Chrome。
现在很多APP都内置了Web⽹页,⽐如说很多电商平台,淘宝、京东、聚划算等等。
WebView⽐较灵活,不需要升级客户端,只需要修改⽹页代码即可。
⼀些经常变化的页⾯可以⽤WebView这种⽅式去加载⽹页。
例如中秋节跟国庆节打开的页⾯不⼀样,如果是⽤WebView显⽰的话,只修改修改html页⾯就⾏,⽽不需要升级客户端。
Webview功能强⼤,可以直接使⽤html⽂件(本地sdcard/assets⽬录),还可以直接加载url,使⽤JavaScript可以html跟原⽣APP互调。
简单使⽤因为需要加载⽹页url,所以需要在AndroidManifest.xml中添加访问⽹络权限。
1 <uses-permission android:name="android.permission.INTERNET" />布局⽂件:activity_main.xml1<?xml version="1.0" encoding="utf-8"?>2<FrameLayout xmlns:android="/apk/res/android"3 android:layout_width="match_parent"4 android:layout_height="match_parent"5 android:orientation="vertical">67<WebView8android:id="@+id/webview"9 android:layout_width="match_parent"10 android:layout_height="match_parent"/>1112<ProgressBar13android:id="@+id/progressbar"14 style="@android:style/Widget.ProgressBar.Horizontal"15 android:layout_width="match_parent"16 android:layout_height="3dip"17 android:max="100"18 android:progress="0"19 android:visibility="gone"/>20</FrameLayout>外层FrameLayout,⾥⾯有WebView跟ProgressBar,WebView的宽⾼匹配⽗类,ProgressBar横向进度条,⾼度3dip,按照FrameLayout 布局规则,ProgressBar会覆盖在WebView之上,默认是隐藏不显⽰。
1.控件WebView显示网页WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用。
webview有两个方法:setWebChromeClient 和setWebClientsetWebClient:主要处理解析,渲染网页等浏览器做的事情setWebChromeClient:辅助WebView处理Javascript的对话框,网站图标,网站title,加载进度等WebViewClient就是帮助WebView处理各种通知、请求事件的。
在AndroidManifest.xml设置访问网络权限:<uses-permission android:name="android.permission.INTERNET"/>控件:<WebViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/webView"/>用途一:加载本地/Web资源example.html 存放在assets文件夹内调用WebView的loadUrl()方法,加载本地资源webView = (WebView) findViewById(R.id.webView); webView.loadUrl("file:///android_asset/example.html"); 加载web资源:webView = (WebView) findViewById(R.id.webView); webView.loadUrl("");用途二:在程序内打开网页创建一个自己的WebViewClient,通过setWebViewClient关联package com.example.testopen;import android.app.Activity;import android.os.Bundle;import android.webkit.WebView;import android.webkit.WebViewClient;publicclass MainActivity extends Activity {private WebView webView;@Overrideprotectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(yout.test);init();}privatevoid init(){webView = (WebView) findViewById(R.id.webView);//WebView加载web资源webView.loadUrl("");//覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为,使网页用WebView打开webView.setWebViewClient(new WebViewClient(){@Overridepublicboolean shouldOverrideUrlLoading(WebView view, String url) {// TODO Auto-generated method stub//返回值是true的时候控制去WebView打开,为false调用系统浏览器或第三方浏览器view.loadUrl(url);returntrue;}});}}用途三:如果访问的页面中有Javascript,则webview必须设置支持Javascript//启用支持javascriptWebSettings settings = webView.getSettings();settings.setJavaScriptEnabled(true);用途四:如果希望浏览的网页后退而不是退出浏览器,需要WebView覆盖URL加载,让它自动生成历史访问记录,那样就可以通过前进或后退访问已访问过的站点。
ANDROID中WEBVIEW的使用WEBVIEW是Android中的一个View组件,用于在应用程序中显示网页内容。
在Android中,使用WEBVIEW可以实现访问网页、展示HTML内容、加载本地HTML文件、加载JS、与JS交互等功能。
本文将详细介绍ANDROID中WEBVIEW的使用。
一、导入WEBVIEW库使用WEBVIEW前,需要在项目的build.gradle文件中添加相关库的依赖:```implementation 'androidx.webkit:webkit:1.4.0'```二、在布局文件中添加WEBVIEW在需要使用WEBVIEW的布局文件中添加WEBVIEW组件:```xml<WebViewandroid:layout_width="match_parent"android:layout_height="match_parent"/>```三、在Activity中初始化WEBVIEW在Activity的onCreate(方法中初始化WEBVIEW:```javaWebView myWebView = findViewById(R.id.webview);WebSettings webSettings = myWebView.getSettings(;webSettings.setJavaScriptEnabled(true);webSettings.setDomStorageEnabled(true);```上述代码中,首先通过findViewById(方法获取到布局文件中的WEBVIEW组件,然后通过getSettings(方法获取到WEBVIEW的设置对象WebSettings,最后设置一些通用的设置,例如设置是否支持JavaScript,是否支持DOM存储等。
四、加载网页使用WEBVIEW加载网页有两种方式,一种是直接加载URL,另一种是加载HTML内容。
androidwebview用法Android WebView是一个用于在Android应用程序中展示网页内容的组件。
它可以嵌入在应用程序的布局中,提供了一个方便的方式来加载和显示网页,同时也支持与网页的交互。
本文将介绍一些常见的Android WebView用法。
一、添加WebView到布局中:要在应用程序布局中添加一个WebView组件,可以使用XML布局文件或者Java代码。
1.使用XML布局文件:在XML布局文件中添加如下代码:```xml<WebView```2. 使用Java代码:在Java代码中添加如下代码:```javaWebView webView = new WebView(this);setContentView(webView);```二、加载网页:加载网页有两种方式:加载本地HTML文件和加载网络URL。
1.加载本地HTML文件:首先将HTML文件放置在应用程序的assets目录下,然后使用如下代码加载文件:```javawebView.loadUrl("file:///android_asset/index.html");```2.加载网络URL:使用如下代码加载URL:```java```三、WebView设置:WebView提供了一些常用的设置方法,可以对其进行个性化定制。
1. 启用JavaScript:```javawebView.getSettings(.setJavaScriptEnabled(true);```2.启用缩放:```javawebView.getSettings(.setSupportZoom(true);webView.getSettings(.setBuiltInZoomControls(true);```3. 设置WebViewClient:```javawebView.setWebViewClient(new WebViewClient();```四、处理WebView事件:可以通过重写WebViewClient和WebChromeClient类的方法来处理WebView的事件和回调。
AndroidWebApp简介Web Apps Overview译者署名: happyjiahan审核:铁骑_PuLee版本:Android 3.2 r1在android上发布一个应用程序一般有两种方式:一种是基于客户端模式(Client-Side模式)的应用程序(基于客户端的应用程序需要用Android SDK来开发,并且需要在用户的设备上安装一个以.apk为后缀名的文件),另一种是基于浏览器的web应用程序(基于浏览器的应用程序的开发需要遵循web标准,通过一个web浏览器来访问你开发的应用程序,不需要在用户的设备上安装其他任何程序)。
图1. 你可以通过两种方式向用户提供你的web内容:一种是通过传统的浏览器的方式,另一种则是通过在Android的应用程序的布局文件中包含一个WebView组件的方式来实现。
那么在你的软件开发过程中,你究竟是应该选择基于客户端的模式(C/S)还是基于浏览器的模式(B/S)呢?其实这个问题要考虑很多个因素,要视你所开发的软件来确定选择哪种模式更合适。
这不是我们当前讨论的重点,下面我们来看一下Android为我们提供了哪些方便我们进行web程序开发的支持吧!l 支持一系列视窗属性,这些属性允许你根据屏幕的大小正确的确定你的web程序的窗口大小。
l 支持css和javascript特性,这些特性能使你可以根据屏幕的像素密度来使用不同的样式和图片资源。
因此,在你决定为android开发一个web应用的时候,可以先不考虑支持多种屏幕方面的问题。
因为让你的web页面在各种android 设备的屏幕上有很好的效果已经很容易了。
Android提供的另外一个很好的特性就是你现在不必纯粹的在客户端或者纯粹的在web上构建你的应用,你可以将这两者融合在一起。
你可以开发一个基于客户端的android应用,但是在这个应用中嵌入了一些web页面(你可以在你的android应用中使用WebView)。
安卓开发笔记——WebView组件我们专业⽅向本是JAVA Web,这学期突然来了个⼿机App开发的课设,对于安卓这块,之前⾃学过⼀段时间,有些东西太久没⽤已经淡忘了准备随笔记录些复习笔记,也当做温故知新吧~1、什么是WebView?WebView(⽹络视图)能加载显⽰⽹页,可以将其视为⼀个浏览器,它使⽤了WebKit渲染引擎加载显⽰⽹页。
废话不多说,直接上代码1、需要在xml布局⽂件中声明WebView组件1<WebView2android:id="@+id/webview"3 android:layout_width="fill_parent"4 android:layout_height="fill_parent"5/>2、在Activity中实例化WebView,并且可通过loadUrl(url)⽅法打开指定url资源1private WebView webView;2private String url = "";3 webView = (WebView) findViewById(R.id.webview);// 获取控件4 webView.loadUrl(url);// 载⼊指定url(调⽤系统⾃带浏览器)这⾥的url可以是⽹络上的资源,也可以是本地⽂件例如:⽹络上的资源:webView.loadUrl("");本地⽂件:webView.loadUrl("file:///android_asset/XX.html"); 本地⽂件存放在:assets ⽂件中⽤这种⽅式打开的资源是依赖于系统⾃带的浏览器,⽽不是WebView组件,若想⽤⾃⾝WebView组件去实现,需要我们去调⽤setWebViewClient()⽅法在实现类中需要去复写⼀个shouldOverrideUrlLoading()⽅法,具体看下⾯代码注释1 webView.setWebViewClient(new WebViewClient() {2/**3 * 重写shouldOverrideUrlLoading,返回值若为true将⽤webview,false则是系统⾃⾝浏览器4*/5 @Override6public boolean shouldOverrideUrlLoading(WebView view, String url) {7 view.loadUrl(url);8return true;9 }10 });这样⼦,我们可以实现不依靠系统⾃带浏览器打开我们的url资源,但这⾥会出现⼀个问题,只要我们⼀点⼿机上的返回键,整个程序就直接退出了。
android开发中WebView的使用
WebView是个好东西,作用相当于一个迷你的浏览器,采用Webkit内核,因此完美支持html,javascript,css等。
有时候,我们完全可以把UI甚至数据处理都交给WebView,配合PHP 等服务端程序,这样Android开发就变成了网页开发,可以省很多精力。
下面是一个WebView的简单例子,如果用把所有功能都交给服务端脚本处理,这个程序已经很完整了,你只要写好网页,把URL填上,再编译,就是一个新软件。
程序功能介绍:打开网页同时显示一个ProgressDialog,网页载入完毕则隐藏,点击页面上链接时再次显示ProgressDialog,载入完隐藏,可用返回键返回上一页。
Android开发之WebView组件的使用详解网络内容
1、LoadUrl直接显示网页内容(单独显示网络图片)
2、LoadData显示中文网页内容(含空格的处理)
APK包内文件
1、LoadUrl显示APK中Html和图片文件
2、LoadData(loadDataWithBaseURL)显示APK中图片和文字混合的Html内容res/layout/main.xml
Java代码。
android webview 用法(一)Android WebView用法详解简介Android WebView是一种可以在Android应用程序中显示Web内容的组件。
它允许开发者在应用中嵌入浏览器功能,以展示网页,访问Web资源,与JavaScript交互等。
本文将详细讲解一些Android WebView的用法。
WebView的基本用法以下是一些基本的WebView用法:•导入WebView组件:在布局文件中添加一个WebView组件,或者在代码中动态创建一个WebView实例。
•加载网页:使用(" data, String mimeType, String encoding)方法加载HTML数据。
•设置WebView属性:通过()方法可以获取WebView的设置对象,通过设置这些属性来控制WebView的行为,比如启用JavaScript、缩放等。
•监听网页加载状态:可以通过(WebViewClient client)方法设置一个WebViewClient对象,用于监听网页加载状态,比如开始加载、加载完成等。
•JavaScript交互:通过WebView的addJavascriptInterface(Object object, String name)方法可以将Android端的对象注入到WebView中,来实现Android和JavaScript的互相调用。
高级用法:自定义WebViewClientWebViewClient是WebView的一个内部类,用于处理各种事件,比如网页加载过程中的start、finish、error等事件。
我们可以通过自定义WebViewClient来实现更多个性化的功能,以下是相关用法:•在WebView中自定义打开方式:通过重写shouldOverrideUrlLoading(WebView view, String url)方法,可以拦截链接的点击事件,选择在当前WebView中打开网页,或者启动外部浏览器打开。
Android Web App官方文档翻译第三章:WebView构建应用文档内容将WebView 加入你的应用¨在Webview中使用JavaScript¨启用JavaScript¨将JavaScript代码绑定到Android代码处理页面导航¨历史记录导航关键的类WebViewWebSettingsWebViewClient相关手册Web View如果你想发布一个web app(或者仅仅是一个web页面)作为客户端的一部分,你可以使用WebView。
WebView是Android中View的扩展,能让你将web页面作为你的活动布局(activity layout)。
它不包含一个浏览器的完整功能,比如导航控制或者地址栏。
WebView默认做的仅仅是展现一个Web页面。
使用WebView的一个常见场景是当你想要在应用中提供一些你可能需要更新的信息的时候,比如终端用户协议或者用户指南。
在你的Android应用中,你需要创建包含WebView的Activity ,然后利用它来展现你挂在网上的文档。
另外一个使用WebView的场景是你为用户提供的数据时需要连接网络来获取数据,比如email。
在这种情况下,你可能会发现在Android应用中构建一个WebView来展现提供相关数据的web页面更为容易,而不是试图连接到网络获取数据,解析数据并将其安置到Android布局中。
你可以设计一个专供Android设备使用的web页面,并在Android中实现一个WebView来加载这个页面。
该文档展示了你可以如何开始使用WebView并额外做一些事情,比如页面导航、将web页面中的Javascript代码绑定到你的Android应用中的代码上去。
将WebView 加入你的应用要在你的应用中加入WebView ,只需要在你的活动布局中加入元素即可。
例如,下面是一个布局文件,在这个文件中,WebView 占满了屏幕。
<?xml version="1.0" encoding="utf-8"?><WebViewxmlns:android="/apk/res/android"android:id="@+id/webview"android:layout_width="fill_parent"android:layout_height="fill_parent"/>要在WebView加载页面,使用loadUrl()。
例如:WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.loadUrl("");在它有效工作之前,你要保证你的应用能访问网络。
要访问网络,需要在你的配置文件中获取INTERNET许可。
例如:<manifest ... ><uses-permission android:name="android.permission.INTERNET" />...</manifest>这就是你要应用一个WebView 来展现web页面基本的所要做的所有事情了。
在WebView中使用JavaScript如果你想要你加载在WebView中的web页面使用Javascript,你需要在WebView中启用Javascript。
一旦启用Javascript,你就可以在你的应用代码以及你的Javascript代码间创建接口了。
启用JavaScript你可以通过WebView中带有的WebSettings来启用它。
你可以通过getSettings()来获取WebSettings的值,然后通过setJavaScriptEnabled()来启用JavaScript。
例如:WebView myWebView = (WebView) findViewById(R.id.webview);WebSettings webSettings = myWebView.getSettings();webSettings.setJavaScriptEnabled(true);WebSettings 还提供了很多其他有用的设置。
比如,如果你在开发一个专用于Android应用中WebView 的web app,那么你就可以通过setUserAgentString()定义自定义用户代理字符串(custom user agent string),然后通过在web页面中查询自定义用户代理来确认正在请求你的web页面的客户端确实是Android应用。
将JavaScript 代码绑定到Android 代码在开发专用于Android应用中WebView 的web app时,你可以在你的Javascript代码和客户端的Android代码间创建接口。
例如,你的Javascript代码可以调用Android代码中的方法来展示一个Dialog,而不是使用Javascript中的alert()函数。
为了在你的Javascript和Android代码间绑定一个新的接口,需要调用addJavascriptInterface(),传给它一个类实例来绑定到Javascript,以及一个接口名让Javascript可以调用以便来访问类。
例如:你可以在你的Android应用中包括如下类:public class JavaScriptInterface {Context mContext;/** Instantiate the interface and set the context */JavaScriptInterface(Context c) {mContext = c;}/** Show a toast from the web page */public void showToast(String toast) {Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();}}在这个例子中,JavaScriptInterface让web页面可以使用showToast()方法来创建一个Toast 消息。
你可以通过addJavascriptInterface()绑定这个类到在WebView 运行的Javascript,并将接口命名为Android。
例如:WebView webView = (WebView) findViewById(R.id.webview); webView.addJavascriptInterface(new JavaScriptInterface(this), "Android");这段代码为在WebView 运行的Javascript创建了一个名为Android的接口。
这时候,你的web app就能访问JavaScriptInterface 类了。
例如,下面是一些HTML 以及Javascript,在用户敲击按钮的时候,它们使用这个新接口创建一个toast消息:<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /><script type="text/javascript">function showAndroidT oast(toast) {Android.showToast(toast);}</script>没有必要从Javascript初始化Android接口,WebView会自动让它可以为你的web页面所用。
所以,在按下按钮的时候,showAndroidT oast() 函数会用这个Android 接口来调用JavaScriptInterface.showToast() 方法。
注意:绑定到你的Javascript的对象在另一个线程中运行,而不是在创建它的线程中运行。
小心:使用addJavascriptInterface()可以让Javascript控制你的Android应用。
这是一把双刃剑,有用的同时也可能带来安全威胁。
当WebView 中的HTML不可信时(例如,HTML的部分或者全部都是由一个未知的人或者进程提供的),那么一个攻击者就可能使用HTML来执行客户端的任何他想要的代码。
因此,不应该使用addJavascriptInterface() ,除非WebView中的所有HTML以及Javascript都是你自己写的。
你同样不应该让用户在你的WebView可以定向到另外一个不是你自己的web 页面上去(相反,让用户的默认浏览器应用打开外部链接——用户浏览器默认打开所有URL链接,因此一定要小心处理页面导航,像下面一节所描述的那样。
) 处理页面导航当用户点击一个WebView中的页面的链接时,默认是让Android启动一个可以处理URL的应用。
通常,是由默认的浏览器打开并加载目标URL的。
然而,你可以在WebView中覆盖这一行为,那么链接就会在WebView中打开。
这样,你就可以让用户通过保存在WebView中的浏览记录前进或者后退了。
要想让用户可以通过点击打开链接,只需要使用setWebViewClient()为WebView提供一个WebViewClient即可。
例如:WebView myWebView = (WebView) findViewById(R.id.webview);myWebView.setWebViewClient(new WebViewClient());这样就可以了。
现在所有用户点击的链接都会直接在WebView中加载了。
如果你想要对于加载的链接的位置有更多控制,你可以创建自己的WebViewClient,覆盖shouldOverrideUrlLoading()方法。
例如:private class MyWebViewClient extends WebViewClient {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {if (Uri.parse(url).getHost().equals("")) {// This is my web site, so do not override; let my WebView load the pagereturn false;}// Otherwise, the link is not for a page on my site, so launch another Activity that handles URLsIntent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));startActivity(intent);return true;}}然后为WebView创建一个新的WebViewClient的实例。