那些年遇到的坑----------Android Webview

最近开发一个Web壳app,我用的是Webview加载前端页面,本来应该是挺简单的事,但是开发过程中Webview的坑还是比较多(IOS一点事都没有,只能说搞Android的命苦),在这总结一下:

主要原因:A:在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit(http://www.webkit.org/)内核,而在Android 4.4及其以上Google 采用了chromium(http://www.chromium.org/)作为系统WebView的底层内核支持。

 B:部分WebView的API在不同的Android版本中不同,所以需要去适配不同的版本,贼坑。

 C:Android对前端的一些标签不支持。


Bug1.在Android4.4版本中Webview定位功能失效,我自己5.0的系统可以定位(Android4.4以下没有去测试)。

原因:Android4.4以下需要我们自己去打开数据库,开启定位。

解决办法:

mWebView.addJavascriptInterface(this, "android");
// 让WebView能够执行javaScript
mWebSettings = mWebView.getSettings();
mWebSettings.setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
//启用数据库
mWebSettings.setDatabaseEnabled(true);
String dir = this.getApplicationContext().getDir("database", Context.MODE_PRIVATE).getPath();
//启用地理定位
mWebSettings.setGeolocationEnabled(true);
//设置定位的数据库路径
mWebSettings.setGeolocationDatabasePath(dir);
并且在WevChromeClient中实现:

onGeolocationPermissionsShowPrompt();

Bug2.在上传本地文件不成功

原因:Android对前端的input标签不支持

解决办法:在WevChromeClient中实现以下方法:

private ValueCallback<Uri[]> UploadMessage;
public ValueCallback<Uri> mUploadMessage;
private static final int KITKAT_RESULTCODE = 99;
public static final int REQUEST_SELECT_FILE = 100;
pu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值