您的位置:首页 > 移动开发

Android开发: 使用WebView来进行混合开发

2016-10-11 23:02 597 查看

Web2Native

方法的使用

WebView使用本地的方法,直接使用是不行的,需要本地进行方法的配置。

1.WebView设置这两句条码

// 允许执行JavaScript脚本
webSettings.setJavaScriptEnabled(true);
//把本类的一个实例添加到js的全局对象window中,"injs"是它的名字
webView.addJavascriptInterface(new InJavaScript(), "injs");


2.JS对象类的设置

final class InJavaScript {
//若需要方法直接被WebView调用,必须在方法前添加此接口注解
@JavascriptInterface
public void web2Native(final String str) {
handler.post(new Runnable() {
public void run() {
textView.setText(str);
}
});
}
//若需要方法直接被WebView调用,必须在方法前添加此接口注解
@JavascriptInterface
public void test() {

}
}


Android漏洞原因 SDK 17 以上需要添加一个接口 JavascriptInterface

方法不是在UI线程中执行,注意对UI控件的操作

3.WebView 调用 Native 方法

<script language="javascript" type="text/javascript">

//调用android接口并发送数据
function sendToAndroid(){
var str = "the data is from JavaScript!";
window.injs.web2Native(str);//通过injs接口调用android的函数
}
</script>


提示框等操作

1.提示框操可以通过WebChromeClient 方便实现,设置WebChromeClient

webView.setWebChromeClient(new WebChromeClient() {
//处理 javascript 中的 alert 弹框,应用程序接管此方法必须返回:true
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
//构建一个Builder来显示网页中的对话框
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Alert");
builder.setMessage(message);
builder.setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
result.confirm();
}
});
builder.setCancelable(false);
builder.create();
builder.show();
return true;
}
});


2.WebView弹出Dialog操作

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<script language="javascript" type="text/javascript">

//DialogAlert提醒
function ale()
{
//回调WebChromeClient里面的方法
alert("This is an alert!");
}
</script>
</head>

<body>
<div><input type="submit" name="Submit" value="alert" onclick="ale()"/></div>

<input type='button' value='get' onClick="alert(window.localStorage['value']+':'+window.localStorage['time'])"/>
</body>


alert(“”);会回调WebChromeClient 里面覆写的onJsAlert方法,这里面可以我们截获后自定义显示Dialog,也可以直接有WebView的内核处理。window.localStorage需要着用这个方法必须设置

webSettings.setDomStorageEnabled(true);


定位

提示框操可以需要对WebChromeClient里面的方法进行覆写

webView.setWebChromeClient(new WebChromeClient() {
//当前页面请求是否允许H5定位
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});


需要GeolocationPermissions.Callback 对象调用invoke(String origin, boolean allow, boolean retain)方法。此方法参数说明:

@param origin 权限设置的源地址

@param allow 是否允许定位

@retain 当前的选择是否让内核记住

并且需要应用程序具有以下权限

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


在Html中的代码:

<script language="javascript" type="text/javascript">

window.onload = function() {
get_location();
}

//定位操作
function get_location() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(show_map,handle_error,{enableHighAccuracy:false,maximumAge:1000,timeout:15000});
} else {
alert("Your browser does not support HTML5 geoLocation");
}
}

//展示地图 -- 定位结束后将位置信息显示
function show_map(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var city = position.coords.city;
document.getElementById("Latitude").innerHTML="latitude:"+latitude;
document.getElementById("Longitude").innerHTML="longitude:"+longitude;
document.getElementById("City").innerHTML="city:"+city;
}
</script>


数据库的操作

提示框操可以需要对WebChromeClient里面的方法进行覆写

webView.setWebChromeClient(new WebChromeClient() {

public void onExceededDatabaseQuota(String url, String databaseIdentifier, long currentQuota,long estimatedSize, long totalUsedQuota,WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(estimatedSize * 2);
}
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota, WebStorage.QuotaUpdater quotaUpdater) {
quotaUpdater.updateQuota(spaceNeeded * 2);
}
});
});


以上方法在 API level 19 被弃用使用,WebView现在使用HTML5 / JavaScript Quota Management API。

HTML中的代码

<script language="javascript" type="text/javascript">

window.onload = function() {
initDatabase();
}

//初始化数据库
function initDatabase() {
try {
if (!window.openDatabase) {
alert('Databases are not supported by your browser');
} else {
var shortName = 'YARINDB';
var version = '1.0';
var displayName = 'yarin db';
var maxSize = 100000;
YARINDB = openDatabase(shortName, version, displayName, maxSize);
createTables();
selectAll();
}
} catch(e) {
if (e == 2) {
// Version mismatch.
console.log("Invalid database version.");
} else {
console.log("Unknown error "+ e +".");
}
return;
}
}

//创建数据库表
function createTables(){
YARINDB.transaction(
function (transaction) {
transaction.executeSql('CREATE TABLE IF NOT EXISTS yarin(id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL,desc TEXT NOT NULL);', [], nullDataHandler, errorHandler);
}
);
insertData();
}
</script>


Native2Web

方法调用

在Android本地添加一个点击事件

public void native2Web(View view) {
//调用javascript中的方法,传入string数据
webView.loadUrl("javascript:getFromAndroid('the data is from android!')");
}


下面是JS的代码

<script language="javascript" type="text/javascript">

function getFromAndroid(str){
document.getElementById("android").innerHTML=str;
}
</script>


这样就实现了Native对Web方法的调用和数据传递。

附一(WebViewClient、WebChromeClient):

WebViewClient主要帮助WebView处理各种通知、请求事件等。

WebChromeClient主要辅助WebView处理Javascript的对话框、网站图标、网站title、加载进度等。

实际使用的话,如果你的WebView只是用来处理一些html的页面内容,只用WebViewClient就行了,如果需要更丰富的处理效果,比如JS、进度条等,就要用到WebChromeClient。

WebViewClient

boolean shouldOverrideUrlLoading(WebView view, String url)


WebView 加载URL的操作,可以截获。比如我们发现跳转到的是一个market的链接,那么我们可以直接跳转到应用市场,或者其他app。

和onPageStarted( )方法的调用顺序

通过loadUrl的方式重新加载一个URL时,先调用onPageStarted( )

在打开的网址中点击一个link,先调用shouldOverrideUrlLoading( )

注意:shouldOverrideUrlLoading( )方法不是每次都调用,例如

请求的方式为”POST”

返回上一界面

返回值意义:

true:WebView 处理url是根据程序来执行的

false:webview处理url是在webview内部执行

super.shouldOverrideUrlLoading(view, url):跳转至手机浏览器

void onPageStarted(WebView view, String url, Bitmap favicon)


WebView 加载URL的操作、返回上以界面操作。可以截获

应用标题被要求随当前加载的URL改变,可以再此处处理

void onLoadResource(WebView view, String url)


即将加载URL制定的资源

void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error)


当浏览器访问制定的网址发生错误时会通知我们应用程序,比如网络错误

boolean shouldOverrideKeyEvent(WebView view, KeyEvent event)


提供应用程序同步一个处理按键事件的机会,菜单快捷键需要被过滤掉。

返回值意义:

true:应用程序处理该事件

false:webview处理该事件(默认)

void onPageFinished(WebView view, String url)


网络加载结束调用

void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)


当网页加载资源过程中发现SSL错误会调用此方法

void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm)


通知应用程序WebView接收到了一个Http auth的请求

应用程序可以使用supplied 设置webview的响应请求

void onScaleChanged(WebView view, float oldScale, float newScale)


WebView尺寸发生变化,可调整适配屏幕

void onReceivedLoginRequest(WebView view, String realm, String account, String args)


自动登录的帐号过程

参数

@param view 请求登陆的webview

@param realm 账户的域名,用来查找账户。

@param account 一个可选的账户,如果是null 需要和本地的账户进行check, 如果是一个可用的账户,则提供登录。

@param args 验证制定参数的登录用户

void doUpdateVisitedHistory(WebView view, String url, boolean isReload)


当前访问的url已经生效并被记录在内核当中,可以将此URL放入历史记录了

这个函数在网页加载过程中只会被调用一次。注意网页前进后退并不会回调这个函数

void onFormResubmission(WebView view, Message dontResend, Message resend)


浏览器需要重新发送POST

参数:

@param view:接收WebViewClient的那个实例,前面看到webView.setWebViewClient(new MyAndroidWebViewClient()),即是这个webview。

@param dontResent 当浏览器不需要重新发送数据时,可以使用这个参数。

@param resent 当浏览器需要重新发送数据时, 可以使用这个参数。

WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)


通知应用程序内核即将加载url制定的资源,应用程序可以返回本地的资源提供给内核

若本地处理返回数据,内核不从网络上获取数据。

此回调并不一定在UI线程中执行,注意操作View或者私有数据相关的动作。

改变网页的背景,实现网页页面颜色定制化的需求,可在此回调中处理。

WebChromeClient

void onProgressChanged(WebView view, int newProgress)


通知应用程序网页加载的进度,一般是顶部一个ProgressBar

void onReceivedTitle(WebView view, String title)


document 的title变化时的回调

此回调时机取决于网页把title设置在什么位置。title设置在页面前面是会较早回调,大部分网页都在前面。

void onReceivedIcon(WebView view, Bitmap icon)


当前页面有个新的favorites icon(网站图标)时候,会回调这个函数。

void onShowCustomView(View view, CustomViewCallback callback)


通知应用程序webview需要显示一个custom view,主要是用在视频全屏HTML5Video support。

不是标准H5的video标签,像优酷的视频都是加载flash播放。全屏时不会回调此方法和onHideCustomView

void onHideCustomView()


退出视频通知

onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg)


请求创建一个新的窗口

如果我们应用程序接管这个请求,必须返回true,并且创建一个新的webview来承载主窗口。

如果应用程序不处理,则需要返回false。(默认)

参数说明:

@param view 请求创建新窗口的webview

@param isUserGesture 如果是true,则说明是来自用户收拾操作行为,比如用户点击链接

@param isDialog true 请求创建的新窗口必须是个dialog,而不是全屏的窗口。

@param resultMsg 当webview创建时需要发送一个消息。WebView.WebViewTransport.setWebView(WebView)

具体例子

private void createWindow(final Message msg) {

WebView.WebViewTransport transport = (WebView.WebViewTransport) msg.obj;

final Tab newTab = mWebViewController.openTab(null, Tab.this, true, true);

transport.setWebView(newTab.getWebView());

msg.sendToTarget();

}


void onCloseWindow(WebView window)


通知应用程序从关闭传递过来的WebView并从View Tree中remove。

void onRequestFocus(WebView view)


webview请求得到focus,发生这个主要是当前webview不是前台状态,是后台webview。

boolean onJsAlert(WebView view, String url, String message, final JsResult result)


通知应用程序显示 alert 对话框

参数

@param view 接收WebViewClient的那个实例,即那个webview。

@param url 当前请求弹出javascript 对话框webview 加载的url地址

@param message 弹出的内容信息

@result 用来响应用户的处理

返回值

true:应用程序处理这个消息

false:内核自己处理

boolean onJsConfirm(WebView view, String url, String message, final JsResult result)


通知应用程序显示 confirm 对话框

使用同上onJsAlert

onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result)


通知应用程序显示 prompt 对话框

使用同上onJsAlert

注:应用程序接管这个方法,必须调用:result.confirm。

boolean onJsBeforeUnload(WebView view, String url, String message, JsResult result)


通知应用程序显示一个对话框,让用户选择是否离开当前页面

返回值意义同上onJsAlert

void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback)


当前页面请求是否允许进行定位

需要加入定位权限

GeolocationPermissions.Callback的使用

callback.invoke(String origin, boolean allow, boolean retain)


@param origin 权限设置的源地址

@param allow 是否允许定位

@retain 当前的选择是否让内核记住

void onGeolocationPermissionsHidePrompt()


当onGeolocationPermissionsShowPrompt获取的定位权限被取消,回调此方法通知应用程序隐藏定位相关UI

boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, FileChooserParams fileChooserParams)


当页面需要请求打开系统的文件选择器,则会回调这个方法。

比如我们需要上传图片,请求拍照,邮件的附件上传等等操作。

openFileChooser 过期不推荐使用

附二(WebSettings 的方法记录):

方法说明

setBuiltInZoomControls (boolean enabled)

是否使用内置的缩放机制。内置的缩放机制包括屏幕上的缩放控件(浮于WebView内容之上)和缩放手势的运用。

setDisplayZoomControls(boolean)可以控制是否显示缩放控件,默认值为true。

setJavaScriptEnabled (boolean flag)

设置WebView是否允许执行JavaScript脚本,默认false,不允许。

setDisplayZoomControls (boolean enabled)

使用内置的缩放机制时是否展示缩放控件,默认值true。参见

setAllowFileAccess (boolean allow)

是否允许访问文件,默认允许。

注意,这里只是允许或禁止对文件系统的访问,Assets和resources文件使用file:///android_asset和file:///android_res仍是可访问的。

setDomStorageEnabled (boolean flag)

DOM存储API是否可用,默认false。

setAllowContentAccess (boolean allow) 是否允许在WebView中访问内容URL(ContentUrl),默认允许。内容Url访问允许WebView从安装在系统中的内容提供者载入内容。

setAllowFileAccessFromFileURLs (boolean flag)

是否允许运行在一个URL环境(thecontext of a file scheme URL)中的JavaScript访问来自其他URL环境的内容,为了保证安全,应该不允许。

注意,这项设置只影响对file schema 资源的JavaScript访问,其他形式的访问,例如来自图片HTML单元的访问不受影响。为了防止相同的域策略(same domain policy)对ICE_CREAM_SANDWICH以及更老机型的侵害,应该显式地设置此值为false。

setAllowUniversalAccessFromFileURLs (boolean flag)

是否允许运行在一个fileschema URL环境下的JavaScript访问来自其他任何来源的内容,包括其他file schema URLs.

参见setAllowFileAccessFromFileURLs(boolean),为了确保安全,应该设置为不允许,注意这项设置只影响对file schema 资源的JavaScript访问,其他形式的访问,例如来自图片HTML单元的访问不受影响。

为了防止相同的域策略(same domain policy)ICE_CREAM_SANDWICH以及更老机型的侵害,应该显式地设置此值为false。ICE_CREAM_SANDWICH_MR1以及更老的版本此默认值为true,JELLY_BEAN以及更新版本此默认值为false。

setAppCacheEnabled (boolean flag)

应用缓存API是否可用,默认值false结合setAppCachePath(String)使用。

setAppCachePath(String)

设置应用缓存文件的路径。为了让应用缓存API可用,此方法必须传入一个应用可写的路径。

该方法只会执行一次,重复调用会被忽略。

setBlockNetworkImage (boolean flag)

是否禁止从网络(通过http和https URI schemes访问的资源)下载图片资源,默认值为false。

注意,除非getLoadsImagesAutomatically()返回true,否则该方法无效。还请注意,即使此项设置为false,使用setBlockNetworkLoads(boolean)禁止所有网络加载也会阻止网络图片的加载。

当此项设置的值从true变为false,WebView当前显示的内容所引用的网络图片资源会自动获取。

setBlockNetworkLoads (boolean flag)

是否禁止从网络下载数据,如果app有INTERNET权限,默认值为false,否则默认为true。

使用setBlockNetworkImage(boolean)只会禁止图片资源的加载。注意此值由true变为false,当前WebView展示的内容所引用的网络资源不会自动加载,直到调用了重载。

如果APP没有INTERNET权限,设置此值为false会抛出SecurityException。

setCacheMode (int mode)

重写使用缓存的方式,默认值LOAD_DEFAULT。

缓存的使用方式基于导航类型,正常的页面加载,检测缓存,需要时缓存内容复现。导航返回时,内容不会复现,只有内容会从缓存盘中恢复。

该方法允许客户端通过指定LOAD_DEFAULT,LOAD_CACHE_ELSE_NETWORK,LOAD_NO_CACHE or LOAD_CACHE_ONLY的其中一项来重写其行为。

setCursiveFontFamily (String font)

设置WebView字体库字体,默认“cursive”

setDatabaseEnabled (boolean flag)

数据库存储API是否可用,默认值false。

注意,只能在当前进程的任意WebView加载页面之前修改此项,因为此节点之后WebView的实现类可能会忽略该项设置的改变。

此方法只能执行一次,重复调用会被忽略。

setDefaultFixedFontSize (int size)

设置默认固定的字体大小,默认为16,可取值1到72。

setDefaultFontSize (int size)

设置默认的字体大小,默认16,可取值1到72。

setDefaultTextEncodingName (String encoding)

设置默认的字符编码集,默认”UTF-8”。setBuiltInZoomControls(boolean).

setFantasyFontFamily (String font)

设置fantasy字体集(font family)的名字默认为“fantasy”。

setFixedFontFamily (String font)

设置固定的字体集的名字,默认为”monospace”。

setGeolocationDatabasePath (String databasePath)

定位数据库的保存路径,为了确保定位权限和缓存位置的持久化,该方法应该传入一个应用可写的路径。

setGeolocationEnabled (boolean flag)

定位是否可用,默认为true。

请注意,为了确保定位API在WebView的页面中可用,必须遵守如下约定:

(1)app必须有定位的权限,参见ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION;

(2)app必须提供onGeolocationPermissionsShowPrompt(String,GeolocationPermissions.Callback)回调方法的实现,在页面通过JavaScript定位API请求定位时接收通知。

作为可选项,可以在数据库中存储历史位置和Web初始权限,参见setGeolocationDatabasePath(String).

setJavaScriptCanOpenWindowsAutomatically (boolean flag)

让JavaScript自动打开窗口,默认false。适用于JavaScript方法window.open()。

setLayoutAlgorithm (WebSettings.LayoutAlgorithm l)

设置布局,会引起WebView的重新布局(relayout),默认值NARROW_COLUMNS。

setLoadWithOverviewMode (boolean overview)

是否允许WebView度超出以概览的方式载入页面,默认false。

即缩小内容以适应屏幕宽度。该项设置在内容宽度超出WebView控件的宽度时生效,例如当getUseWideViewPort()返回true时。

setLoadsImagesAutomatically (boolean flag)

WebView是否下载图片资源,默认为true。

注意,该方法控制所有图片的下载,包括使用URI嵌入的图片(使用setBlockNetworkImage(boolean)只控制使用网络URI的图片的下载)。

如果该设置项的值由false变为true,WebView展示的内容所引用的所有的图片资源将自动下载。

setMediaPlaybackRequiresUserGesture (boolean require)

WebView是否需要用户的手势进行媒体播放,默认值为true。

setMinimumFontSize (int size)

设置最小的字号,默认为8。

setMinimumLogicalFontSize (int size)

设置最小的本地字号,默认为8。

setMixedContentMode (int mode)

当一个安全的来源(origin)试图从一个不安全的来源加载资源时配置WebView的行为。

默认情况下,KITKAT及更低版本默认值为MIXED_CONTENT_ALWAYS_ALLOW,LOLLIPOP版本默认值MIXED_CONTENT_NEVER_ALLOW。

WebView首选的最安全的操作模式为MIXED_CONTENT_NEVER_ALLOW,不鼓励使用MIXED_CONTENT_ALWAYS_ALLOW。

setNeedInitialFocus (boolean flag)

调用requestFocus(int,Android.graphics.Rect)时是否需要设置节点获取焦点,默认值为true。

setOffscreenPreRaster (boolean enabled)

当WebView切换到后台但仍然与窗口关联时是否raster tiles,打开它可以避免在WebView从后台切换到前台时重新绘制,默认值false。

在这种模式下后台的WebView占用更多的内存。请按如下准则显示内存的使用:

WebView的尺寸不能比设备的屏幕尺寸更大;

限制在少数WebView上使用该模式;

在可见的WebView和即将显现的WebView上使用;

setSansSerifFontFamily (String font)

设置无衬线字体集(sans-serif font family)的名字。默认值”sans-serif”。

setSaveFormData (boolean save)

WebView是否保存表单数据,默认值true。

setSerifFontFamily (String font)

设置衬线字体集(serif font family)的名字,默认“sans-serif”。

setStandardFontFamily (String font)

设置标准字体集的名字,默认值“sans-serif”。

setSupportMultipleWindows (boolean support)

设置WebView是否支持多窗口。如果设置为true,主程序要实现onCreateWindow(WebView, boolean,boolean, Message),默认false。

setSupportZoom (boolean support)

WebView是否支持使用屏幕上的缩放控件和手势进行缩放,默认值true。

设置setBuiltInZoomControls(boolean)可以使用特殊的缩放机制。该项设置不会影响zoomIn() and zoomOut()的缩放操作。

setTextZoom (int textZoom)

设置页面上的文本缩放百分比,默认100。

setUseWideViewPort (boolean use)

WebView是否支持HTML的“viewport”标签或者使用wide viewport。

设置值为true时,布局的宽度总是与WebView控件上的设备无关像素(device-dependent pixels)宽度一致。

当值为true且页面包含viewport标记,将使用标签指定的宽度。如果页面不包含标签或者标签没有提供宽度,那就使用wide viewport。

setUserAgentString (String ua)

设置WebView的用户代理字符串。

如果字符串为null或者empty,将使用系统默认值。

注意从KITKAT版本开始,加载网页时改变用户代理会让WebView再次初始化加载。

supportMultipleWindows ()

获取WebView是否支持多窗口的值。

supportZoom ()

获取WebView是否支持缩放的值。

已废弃的API 方法

setTextSize (WebSettings.TextSize t)

API14版本以上已废弃。请取代使用setTextZoom(int)。设置页面文本的尺寸,默认NORMAL。

setSavePassword (boolean save)

API18以上版本已废弃。未来版本将不支持保存WebView中的密码。

设置WebView是否保存密码,默认true。

setDefaultZoom (WebSettings.ZoomDensity zoom)

已废弃。设置默认的缩放密度,必须在UI线程调用,默认值MEDIUM.该项设置在新应用中不推荐使用。

如果WebView用于展示手机页面,可以通过调整页面的’meta viewport’ 标记中的’width’ 和‘initial-scale’属性实现预期效果,对于漏用标记的页面,可以使用setInitialScale(int)和setUseWideViewPort(boolean)。

setDatabasePath (String databasePath)

已废弃,数据库路径由实现(implementation)管理,调用此方法无效。

设置数据库的存储路径,为了保证数据库正确运行,该方法必须使用一个应用可写的路径。

setAppCacheMaxSize (long appCacheMaxSize)

已废弃。设置应用缓存内容的最大值。所传值会被近似为数据库支持的最近似值,因此这是一个指示值,而不是一个固定值。

所传值若小于数据库大小不会让数据库调整大小。默认值是MAX_VALUE,建议将默认值设置为最大值。

setEnableSmoothTransition (boolean enable)

已废弃,将来会成为空操作(no-op),设置当panning或者缩放或者持有当前WebView的window没有焦点时是否允许其光滑过渡,若为true,WebView会选择一个性能最大化的解决方案。

例如过渡时WebView的内容可能不更新。若为false,WebView会保持精度(fidelity),默认值false。

setLightTouchEnabled (boolean enabled)

从 JELLY_BEAN开始,该设置无效。允许使用轻触摸做出选择和光标悬停。

setPluginState (WebSettings.PluginState state)

在API18以上已废弃。未来将不支持插件,不要使用。

告诉WebView启用、禁用或者有即用(on demand)的插件,即用模式是指如果存在一个可以处理嵌入内容的插件,会显示一个占位图标,点击时开启。默认值OFF。

setRenderPriority (WebSettings.RenderPriority priority)

在API18以上已废弃。不建议调整线程优先级,未来版本不会支持这样做。

设置绘制(Render,很多书上翻译成渲染,貌似很专业,但是不易懂,不敢苟同)线程的优先级。不像其他设置,同一进程中只需调用一次,默认值NORMAL。

项目地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: