android Js交互进阶版

混合开发越来越常见,最近做了一个大批量的混合开发,发现简单的互调方法早已满足不了需求,摸爬滚打的踩坑过后,记录一下几个问题,顺便帮助尚处水深火热的同行排忧解惑。

1.数据传递
①. 如果是想传的只有一个值,那么比较简单,直接 webview.loadUrl(“javascript:login(“+user.getName+”)”);
②.想要在.jsp中使用很多安卓的数据,或者一个实体的话,可以使用 @JavascriptInterface标签和 webview.addJavascriptInterface(user, “user”); 直接让js使用一个实体
@JavascriptInterface:在一个class文件的方法上表上这个标注,表示这个方法在js中是可以直接通过对象调用的;
webview.addJavascriptInterface(user, “user”); :将安卓对象传递个js;
2.javascript:history.go(-1)无效
开始时随大流在
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webview.load(url);
return true;
}
});
加入了 webview.load(url);防止打开自带浏览器加载链接,但是有时候你会发现js里面的回退方法竟然在手机上不管用了,解决是删掉load(url) 再return false ;
3.alert()在手机上不显示
调试jsp页面常用alert()辨别是否执行,但是手机端不会显示,原因是webview 不支持,需要内嵌浏览器内核,好在谷歌的浏览器内核可以直接用: webview.setWebChromeClient(new WebChromeClient());

4.支持使用localStorage
localStorage:进阶的session
webview设置支持
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheMaxSize(1024 * 1024 * 6);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
webSettings.setAppCachePath(appCachePath);
webSettings.setAllowFileAccess(true);
webSettings.setAppCacheEnabled(true);

安卓小白,多包涵;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值