##一、基本设置 一般WebView不做多余配置,没有交互要求,只是很简单的载入网页的话,基本下面的配置就够用了
[代码]java代码:
1
2
3
4
5
6
|
WebSettings mWebSettings = mWebView.getSettings();
mWebSettings.setSupportZoom(
true
);
mWebSettings.setLoadWithOverviewMode(
true
);
mWebSettings.setUseWideViewPort(
true
);
mWebSettings.setDefaultTextEncodingName(
"GBK"
);
mWebSettings.setLoadsImagesAutomatically(
true
);
|
上面可以看到,对于基本的使用,配置是很简单的,没什么太多需要自己注意的,接下来就是一些手机APP上载入网页的时候用得比较多的情况了,下面会一一列出。
##二、JS与APP交互 这种情况一般是比较常见的,就是JS网页调用APP的方法做一些本地事情,然后是APP调用JS的方法反馈一些情况什么的。
而要实现这个最重要的一个设置就是这个 mWebSettings.setJavaScriptEnabled(true); 要使能webview可以调用JS方法
1)APP调用JS方法
[代码]java代码:
1
2
3
|
mWebView.loadUrl(
"javascript:test()"
);
// 调用js函数无参数
mWebView.loadUrl(
"javascript:test(test)"
);
//test是js的函数test()的参数
|
2)JS调用APP方法 JS调用APP的方法也比较简单,只要添加JavascriptInterface方法接口即可
[代码]java代码:
1
|
mWebView.addJavascriptInterface(mWebAppInterface,
"AndroidWebAppInterface"
);
|
然后实现JS需要调用的方法,这里需要注意的就是安卓版本大于17的时候,需要在JS方法上加上注解
@JavascriptInterface
@JavascriptInterface
@JavascriptInterface
重要的事情说三遍
像这样
[代码]java代码:
1
2
3
4
5
6
|
// 如果target 大于等于API 17,则需要加上如下注解
@JavascriptInterface
public
void
showToast(String toast) {
LogUtils.d(TAG,
"toast = "
+ toast);
Toast.makeText(mContext, toast, Toast.LENGTH_LONG).show();
}
|
##三、HTML5数据存储(LocalStorage)
有时候网页需要自己保存一些关键数据,这个时候就需要用到像LocalStorage这些东西了,而安卓WebView默认是无法使用的,也是需要用户自己配置的,感觉好坑啊,IOS的直接加载啥都不用配置就都能用了,安卓直接用啥都不行,感觉被虐惨了。下面是关键配置,最最重要就是这个
mWebSettings.setDomStorageEnabled(true);mWebSettings.setDomStorageEnabled(true);mWebSettings.setDomStorageEnabled(true);
重要的事情说三遍
[代码]java代码:
1
2
3
4
5
|
mWebSettings.setDomStorageEnabled(
true
);
mWebSettings.setDatabaseEnabled(
true
);
mWebSettings.setAppCacheEnabled(
true
);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
mWebSettings.setAppCachePath(appCachePath);
|
##四、HTML5定位(获取当前地址)
存储完了,就该是定位了,有时候网页想自己直接获取定位地址,就需要用到定位配置了。当然该有的权限还是得自己加上,比如:
[代码]xml代码:
1
2
3
|
<
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"
></
uses-permission
></
uses-permission
></
uses-permission
>
|
主要的配置就是需要复写WebChromeClient的三个方法
[代码]java代码:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
@Override
public
void
onReceivedIcon(WebView view, Bitmap icon) {
super
.onReceivedIcon(view, icon);
}
@Override
public
void
onGeolocationPermissionsHidePrompt() {
super
|