Android Webview与Html5交互
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android Webview与Html5交互,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3271字,纯文字阅读大概需要5分钟。
内容图文
![Android Webview与Html5交互](/upload/InfoBanner/zyjiaocheng/1312/f2b683853a1949848b9c5328f706e1d8.jpg)
转:http://fangjie.info/?p=417#more-417
一、WebView.setWebViewClient(new MyWebViewClient());
1.publicboolean shouldOverrideUrlLoading(WebView view, String url) { onWebPageShouldLoad(view, url); //通过returntrue; }
在点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。
坑爹之处1:Android 2.3.x WebView中的两个搞笑的bug :http://blog.csdn.net/thestoryoftony/article/details/7844287
解决办法:将逻辑加在onPageStarted中处理。
2.publicvoid onPageStarted(WebView view, String url, Bitmap favicon) { }
在页面加载开始时调用。
shouldOverrideUrlLoading与onPageStarted区别:
当点击页面中的链接的时候他们俩都会执行,但是返回到上一个页面的时候onPageStarted会执行,但是shouldOverrideUrlLoading就不执行了,就是onPageStarted什么时候都执行的
public void onPageFinished(WebView view, String url) { onWebPageLoaded(view, url); }
在页面加载结束时调用。
二、WebView.setWebChromeClient(new MyWebChromeClient());
public void onReceivedTitle(WebView view, String title) { // 设置Actionbar的Title } public void onProgressChanged(WebView view, int progress) { //设置页面加载进度} @Override publicboolean onJsConfirm(WebView view, String url, String message, final JsResult result) { //弹出框处理(alert,confirm) }
三、WebView.addJavascriptInterface(jsObject, “jsObj”);
1.先写一个接口类
public class JsInteface{ // 分享相关的内容 private String mTitle; private String mDes; private String mLink; private String mImgUrl; private String mBigImgUrl; @JavascriptInterface public void setShareContent(String Title,String Des,String Link,String ImgUrl,String BigImgUrl) { mTitle=Title; mDes=Des; mLink=Link; mImgUrl=ImgUrl; mBigImgUrl=BigImgUrl; Log.i("OUTPUT", "11title:"+mTitle+" desc:"+mDes+" mLink"+mLink+" mImgUrl"+mImgUrl+" mBigImgUrl"+mBigImgUrl); } }
2.向webview中注入接口类的对象
WebView.addJavascriptInterface(jsObject, “jsObj”);
3.调用注入对象的js
mWebView.loadUrl("javascript:window.jsObj.setShareContent(document.getElementById(‘app_title‘).innerHTML," + "document.getElementById(‘app_desc‘).innerHTML," + "document.getElementById(‘app_link‘).innerHTML," + "document.getElementById(‘app_img_url‘).src," + "document.getElementById(‘app_big_img_url‘).src)");
坑爹之处2:Webview.addJavascriptInterface() does not work on API 17
http://stackoverflow.com/questions/16353430/appview-addjavascriptinterface-does-not-work-on-api-17
解决办法: 在接口方法前加上@JavascriptInterface,并且引入该类,import android.webkit.JavascriptInterface;
四、WebView.setOnKeyListener(new View.OnKeyListener()
mWebView.setOnKeyListener(new View.OnKeyListener() { @Override publicboolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()) { //表示按返回键 mWebView.goBack(); //后退 returntrue; //已处理 } } returnfalse; } });
这段代码是监听back按键使webview后退一个页面而不是退出webview,类似于浏览器中的后退按键。
五、WebView.setDownloadListener(new MyDownloadListener());
这个API可以做下载方面的处理,自己在项目中没有使用到,这里就不做解释了。
原文:http://www.cnblogs.com/spring87/p/4280565.html
内容总结
以上是互联网集市为您收集整理的Android Webview与Html5交互全部内容,希望文章能够帮你解决Android Webview与Html5交互所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。