Android WebView相关设置

##一、基本设置 一般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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值