webview实践
来源:互联网 发布:mysql安装步骤 编辑:程序博客网 时间:2024/05/21 00:46
webview与javascript交互
webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new ClickModel(this), "js");第一句为设置与javascripte能够交互,第二句设置交互操作。
这里的ClickModel:
public class ClickModel { private Context mContext; public ClickModel(Context context){ this.mContext = context; } @JavascriptInterface public void clicks(){ Toast.makeText(mContext,"click from js",Toast.LENGTH_SHORT).show(); }}在你提供给JavaScript调用的方法上加上注解@JavascriptInterface。
assets下的input.html:
<Html><head> <script type="text/javascript" charset="utf-8"> function call(){ js.clicks(); } </script></head><body> <input type="button" value="dianji" onclick="call()"> <a href="kedou://com.example.webview.DemoActivity">DemoActivity</a></body></Html>
此处就是点击“dianji"按钮,执行javaScript的call方法。call中调用了由webView.addJavascriptInterface(new ClickModel(this), "js")产生的方法。
这种方式在android 4.2之前webview有远程注入的安全问题,4.2之后google修复了这个问题。那么,在开发中,尽量少用这个方式,推荐用第二种方式,也就是url的方式。
url方式
也就是input.html的body中的<a>的方式。本例中 <a href="kedou://com.example.webview.DemoActivity">DemoActivity</a>,点击这个超链接,目的是要跳到DemoActivity.
在shouldOverrideUrlLoading()方法中处理超链接中的url.
webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.e("override_url", url); if(url.startsWith("kedou://")){ String temp = url.substring(8); try { Class desClass = Class.forName(temp); startActivity(new Intent(JsActionActivity.this, desClass)); } catch (ClassNotFoundException e) { e.printStackTrace(); } return true; //主应用程序处理 } view.loadUrl(url); return super.shouldOverrideUrlLoading(view, url); //webview处理 }
效果图:
java调用js方法参考JS与Native交互
如果要求更高的安全性,可用第三方组件,详细参考https://github.com/pedant/safe-java-js-webview-bridge
源码:http://yunpan.cn/cm7Qk4JVMuRXT (提取码:64d5)
1 0
- webview实践
- webview接入HttpDNS实践
- WebView远程调试方式实践(Android & IOS)
- Android hybrid 开发实践(android webview)
- (一)WebView实践之基本用法
- (二)WebView实践之代码交互
- (三)WebView实践之性能优化
- [WebView学习之六]:Web Apps最佳实践规则
- 移动APP、webview调试最佳实践(一)
- Android开发实践(三)WebView(网络视图)使用实例
- Android开发实践 带你理解使用WebView
- 安卓系统中调试webview页面的实践
- webview系列:业内知名公司的混合开发实践
- webview系列:业内知名公司的混合开发实践
- WebView
- WebView
- WebView
- webView
- 如何根治安卓卡顿短板 三星这次有办法
- LaunchImage设置失败的可能原因之一
- 两个线程按顺序打印1~10
- iOS项目开发实战——使用UICollectionView实现瀑布流
- 杭电1008-Elevator
- webview实践
- Grunt入门
- 计数排序
- spring mvc 文件上传+本地预览+一次提交
- 进程、线程知识点随笔
- 测试用例的主要要素
- zTree
- Arm nandflash&norflash启动原理
- Python __del__