WebView
INTERNET 权限
您的应用必须能够访问互联网。要获取互联网访问权限,请在您的清单文件中请求INTERNET
权限
<manifest ... >
<uses-permission android:name="android.permission.INTERNET" />
...
</manifest>
loadUrl(String)
加载给定的 URL。
android4.4 以下跟 H5 交互需要调用 loadUrl(javascript:方法名(参数))来实现调用js方法
evaluateJavascript(String,ValueCallback<String>
)
android4.4之后才能使用
注意:该方法的执行不会使页面刷新
在当前显示页面的上下文中异步调用 JavaScript
。如果非空,resultCallback
将使用从该执行返回的任何结果进行调用。此方法必须在 UI 线程上调用,回调将在 UI 线程上进行。
-
script
要执行的 JavaScript,该值不能为 null。
-
resultCallback
当脚本执行完成并得到执行结果(如果有)时要调用的回调。
null
如果不需要通知结果。
loadUrl(String,Map<String,String>)
加载带有附加 HTTP 标头的给定 URL,指定为从名称到值的映射。请注意,如果此映射包含此 WebView 默认设置的任何标头,例如控制缓存、接受类型或 User-Agent 的标头,则它们的值可能会被此 WebView 的默认值覆盖。
loadData(String,String,String)
使用“数据”方案 URL 将给定数据加载到此 WebView。
-
data
给定编码的数据字符串 此值不能为
null
-
mimeType
数据的 MIME 类型,例如 ‘text/html’。这个值可能是
null
。 -
encoding
数据的编码 这个值可能是
null
。
loadDataWithBaseURL(String,String,String,String)
将给定数据加载到此 WebView 中,使用 baseUrl 作为内容的基本 URL。基本 URL 既用于解析相对 URL,也用于应用 JavaScript 的同源策略。historyUrl 用于历史条目。
请注意,只有当 baseUrl 指定除 “http”、“https”、“ftp”、“ftps”、“about”或 “javascript” 之外的方案时,以这种方式指定的内容才能访问本地设备文件(通过 “文件” 方案 URL) '。
-
baseUrl
用作页面基本 URL 的 URL。如果
null
默认为about:blank
。 -
data
给定编码的数据字符串 此值不能为
null
-
mimeType
数据的 MIME 类型,例如 ‘text/html’。这个值可能是
null
。 -
encoding
数据的编码 这个值可能是
null
。 -
historyUrl
用作历史记录条目的 URL。如果
null
默认为about:blank
。如果非空,这必须是一个有效的 URL。
addJavascriptInterface(Object,String)
将提供的 Java 对象注入此 WebView。使用提供的名称将该对象注入到网页的所有框架中,包括所有 iframe。这允许从 JavaScript 访问 Java 对象的方法。
在 android4.2 以及以上版本
的应用,只有带有@JavascriptInterface
注解的公共方法
, JavaScrpit 才能访问到。android4.2以下的版本
,可以访问所有公共方法(包括继承的方法)
class JsObject {
@JavascriptInterface
public String toString() { return "injectedObject"; }
}
webview.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(new JsObject(), "injectedObject");
webView.loadData("", "text/html", null);
webView.loadUrl("javascript:alert(injectedObject.toString())");
canGoBack()
获取此 WebView 是否有返回历史记录项。返回一个 boolean
canGoForward()
获取此 WebView 是否有向前历史记录项。返回一个 boolean
canGoBackOrForward(int)
获取页面是否可以返回或前进给定的步数。返回一个 boolean
clearCache(boolean)
清除资源缓存。
-
includeDiskFiles
如果为 false,只清除内存缓存
destroy()
销毁此 WebView 的内部状态。在从视图系统中删除此 WebView 后,应调用此方法。销毁后,不能在此 WebView 上调用其他方法。
getContentHeight ()
获取 HTML 内容的高度。
getCurrentWebViewPackage()
如果 WebView 已经加载到当前进程中,此方法将返回用于加载它的包。否则,将返回当前加载 WebView 时将使用的包;这不会导致 WebView 被加载,因此此信息可能随时过时。
返回值:
-
PackageInfo
当前的 WebView 包,或者
null
如果没有
getOriginalUrl ()
获取当前页面的原始 URL。这并不总是与传递给 WebViewClient.onPageStarted 的 URL 相同,因为虽然该 URL 的加载已经开始,但当前页面可能没有改变。此外,可能存在重定向导致与最初请求的 URL 不同的 URL。
返回值:
-
String
最初为当前页面请求的 URL,或者
null
如果没有加载页面
getSettings()
获取用于控制此 WebView 设置的 WebSettings 对象。
返回值:
-
WebSettings
一个 WebSettings 对象,可用于控制此 WebView 的设置 此值不能
null
。
WebSettings
-
getAllowContentAccess()
获取此 WebView 是否支持内容 URL 访问。
-
getAllowFileAccess()
获取此 WebView 是否支持文件访问。
-
getAllowFileAccessFromFileURLs()
获取在文件方案 URL 的上下文中运行的 JavaScript 是否可以访问来自其他文件方案 URL 的内容。
-
getAllowUniversalAccessFromFileURLs()
获取在文件方案 URL 的上下文中运行的 JavaScript 是否可以访问来自任何来源的内容。这包括从其他文件方案 URL 访问内容。
-
getCacheMode()
获取用于覆盖缓存模式的当前设置。
覆盖缓存模式的当前设置值为, , , , 或
LOAD_DEFAULT``LOAD_NORMAL``LOAD_CACHE_ELSE_NETWORK``LOAD_NO_CACHE``LOAD_CACHE_ONLY
-
getDatabaseEnabled()
获取是否启用了数据库存储 API。
-
setAllowContentAccess(boolean)
在 WebView 中启用或禁用内容 URL 访问。内容 URL 访问允许 WebView 从安装在系统中的内容提供程序加载内容。默认启用。
-
setAllowFileAccess(boolean)
在 WebView 中启用或禁用文件访问。请注意,这仅启用或禁用文件系统访问。仍然可以使用 file:///android_asset 和 file:///android_res 访问资产和资源。
-
setAllowFileAccessFromFileURLs(boolean)
设置是否应允许文件方案 URL 上下文中的跨域请求访问来自其他文件方案 URL 的内容。请注意,某些访问(例如图像 HTML 元素)不遵循同源规则,并且不受此设置的影响。
如果您打开可能由外部来源创建或更改的文件,请**不要启用此设置。**启用此设置允许在上下文中加载的恶意脚本
file://
访问任意本地文件,包括 WebView cookie 和应用程序私有数据。 -
setAllowUniversalAccessFromFileURLs(boolean)
设置是否应允许文件方案 URL 上下文中的跨域请求访问来自任何源的内容。这包括从其他文件方案 URL 或 Web 上下文访问内容。请注意,某些访问(例如图像 HTML 元素)不遵循同源规则,并且不受此设置的影响。
如果您打开可能由外部来源创建或更改的文件,请**不要启用此设置。**启用此设置允许在上下文中加载的恶意脚本
file://
启动跨站点脚本攻击,访问任意本地文件,包括 WebView cookie、应用程序私有数据,甚至是任意网站上使用的凭据。 -
setCacheMode(int)
覆盖使用缓存的方式。使用缓存的方式取决于导航类型。对于正常的页面加载,会检查缓存并根据需要重新验证内容。向后导航时,不会重新验证内容,而是从缓存中检索内容。此方法允许客户端通过指定 、 或 之一来
LOAD_DEFAULT
覆盖LOAD_CACHE_ELSE_NETWORK
此LOAD_NO_CACHE
行为LOAD_CACHE_ONLY
。默认值为LOAD_DEFAULT
。 -
setDatabaseEnabled(boolean)
设置是否启用数据库存储 API。默认值为假。另请参阅
setDatabasePath(String)
如何正确设置数据库存储 API。此设置实际上是全局的,跨进程中的所有 WebView 实例。请注意,您应该只在给定进程中加载任何WebView 页面之前修改此设置,因为在此之后 WebView 实现可能会忽略对此设置的更改。 -
setDomStorageEnabled(boolean)
设置是否启用 DOM 存储 API。默认值为
false
。决定是否启用 DOM 的Local Storage 和 Session Storage
存储。 -
setJavaScriptCanOpenWindowsAutomatically(boolean)
告诉 JavaScript 自动打开窗口。这适用于 JavaScript 函数
window.open()
。默认值为false
. -
setJavaScriptEnabled(boolean)
告诉 WebView 启用 JavaScript 执行。 默认值为
false
. -
setLoadWithOverviewMode(boolean)
设置 WebView 是否以概览模式加载页面,即按宽度缩小内容以适应屏幕。当内容宽度大于 WebView 控件的宽度时会考虑该设置,例如
getUseWideViewPort()
启用时。默认值为false
. -
setUseWideViewPort(boolean)
设置 WebView 是应该启用对“viewport”HTML 元标记的支持还是应该使用宽视口。当设置的值为 时
false
,布局宽度始终设置为 WebView 控件的宽度,以设备无关 (CSS) 像素为单位。当值为true
且页面包含视口元标记时,使用标记中指定的宽度值。如果页面不包含标签或不提供宽度,则将使用宽视口。 -
setMediaPlaybackRequiresUserGesture(boolean)
设置 WebView 是否需要用户手势来播放媒体。默认值为
true
. -
setSupportZoom(boolean)
设置 WebView 是否应支持使用其屏幕缩放控件和手势进行缩放。可以使用 设置应使用的特定缩放机制
setBuiltInZoomControls(boolean)
。此设置不影响使用WebView#zoomIn()
和WebView#zoomOut()
方法执行的缩放。默认值为true
. -
setUseWideViewPort(boolean)
设置 WebView 是应该启用对“viewport”HTML 元标记的支持还是应该使用宽视口。当设置的值为 时
false
,布局宽度始终设置为 WebView 控件的宽度,以设备无关 (CSS) 像素为单位。当值为true
且页面包含视口元标记时,使用标记中指定的宽度值。如果页面不包含标签或不提供宽度,则将使用宽视口。
getUrl()
获取当前页面的 URL。这并不总是与传递给 WebViewClient.onPageStarted 的 URL 相同,因为虽然该 URL 的加载已经开始,但当前页面可能没有改变。
返回值:
-
String
当前页面的 URL,或者
null
如果没有加载页面
getWebChromeClient()
获取 chrome 处理程序。
返回值:
-
WebChromeClient
WebChromeClient,或者
null
如果尚未设置
getWebViewClient()
获取 WebViewClient。
返回值:
-
WebViewClient
WebViewClient 或默认客户端(如果尚未设置) 此值不能为
null
.
saveWebArchive (String)
将当前视图另存为 Web 存档。
-
filename
归档文件所在的文件名 这个值不能是
null
。
setBackgroundColor(int)
设置此视图的背景颜色。
-
color
背景颜色
setInitialScale(int)
设置此 WebView 的初始比例。0 表示默认值。
如果内容按宽度适合 WebView 控件,则缩放设置为 100%。对于广泛的内容,行为取决于WebSettings#getLoadWithOverviewMode()
. 如果其值为true
,则内容将被缩小以适应 WebView 控件的宽度,否则不会。
-
scaleInPercent
以百分比表示的初始比例
setWebChromeClient(WebChromeClient)
设置 chrome 处理程序。这是 WebChromeClient 的实现,用于处理 JavaScript 对话框、网站图标、标题和进度。这将替换当前的处理程序。
-
client
WebChromeClient 的一个实现 这个值可能是
null
.
WebChromeClient
-
getDefaultVideoPoster()
不播放时,视频元素由“海报”图像表示。要使用的图像可以由 HTML 中视频标签的海报属性指定。如果该属性不存在,则将使用默认海报。此方法允许 ChromeClient 提供该默认图像。
返回值:
-
Bitmap
位图 用作默认海报的图像,或者
null
如果没有这样的图像可用。
-
-
getVisitedHistory(ValueCallback<String[]>)
获取所有访问历史项的列表,用于链接着色
-
onConsoleMessage(ConsoleMessage)
向主机应用程序报告 JavaScript 控制台消息。ChromeClient 应该覆盖它以处理他们认为合适的日志消息。
-
consoleMessage
包含控制台消息详细信息的对象。
-
-
onJsAlert(WebView,String,String,JsResult)
通知主机应用程序该网页想要显示一个 JavaScript
alert()
对话框。如果此方法返回
false
或未被覆盖,则默认行为是显示一个包含警报消息的对话框并暂停 JavaScript 执行,直到该对话框被关闭。要显示自定义对话框,应用程序应
true
从此方法返回,在这种情况下,将不显示默认对话框,并且 JavaScript 执行将暂停。当自定义对话框被关闭时应用程序应该调用JsResult.confirm()
,以便可以恢复 JavaScript 执行。 -
onProgressChanged(WebView,int)
告诉宿主应用程序加载页面的当前进度。
-
onReceivedIcon(WebView,Bitmap)
通知主机应用程序当前页面的新网站图标 -
onReceivedTitle(WebView,String)
通知主机应用程序文档标题的更改。
setWebContentsDebuggingEnabled(boolean)
启用对加载到此应用程序的任何 WebView 中的 Web 内容(HTML / CSS / JavaScript)的调试。可以启用此标志,以便于调试 Web 布局和在 WebView 中运行的 JavaScript 代码。
setWebViewClient(WebViewClient)
设置将接收各种通知和请求的 WebViewClient。这将替换当前的处理程序。
-
client
WebViewClient 的一个实现 这个值不能
null
。
WebViewClient
-
onPageFinished
通知主机应用程序页面已完成加载。此方法仅对主机调用
-
onPageStarted
通知主机应用程序页面已开始加载。每次加载主框架时都会调用一次此方法
-
onReceivedError
向主机应用程序报告错误。这些错误是不可恢复的
-
onReceivedHttpError
通知主机应用程序在加载资源时从服务器接收到 HTTP 错误。HTTP 错误的状态码 >= 400。
-
onReceivedSslError
通知主机应用程序加载资源时发生 SSL 错误。宿主应用程序必须调用
SslErrorHandler#cancel
或SslErrorHandler#proceed
。请注意,可能会保留该决定以用于响应未来的 SSL 错误。默认行为是取消加载。 -
shouldInterceptRequest
将资源请求通知宿主应用程序并允许应用程序返回数据。如果返回值为
null
,则 WebView 将照常继续加载资源。否则,将使用返回响应和数据。 -
shouldOverrideUrlLoading
当即将在当前 WebView 中加载 URL 时,让宿主应用程序有机会进行控制。如果未提供 WebViewClient,默认情况下 WebView 将要求 Activity Manager 为 URL 选择正确的处理程序。如果提供了 WebViewClient,返回
true
会导致当前 WebView 中止加载 URL,而返回false
会导致 WebView 像往常一样继续加载 URL。
stopLoading()
停止加载