webview与javascript交互并调用baidu地图服务(内部资料)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java中处理javascript响应-1
Android 软件工程师系列课程
处理WebView加载网页弹出的对话框。
setWebChromeClient(WebChromeClient client) 创建WebChromeClient对象,根据网页弹出的对话框重写响应方法 :
►onJsAlert(WebView view, String url, String msg, JsResult result) ►onJsConfirm(WebView view, String url, String msg, JsResult result) ►onJsPrompt(WebView view, String url, String msg, String defaultValue, JsPromptResult result)
添加java方法的调用接口,允许javascript脚本调用java方法:
►addJavascriptInterface(Object obj, String interfaceName) ►Object对象中自定义需要调用的方法,方法通常使用Handler调用,字 符串参数作为调用的接口名。
通过loadUrl(String url)方法在java方法中访问javascript脚本中的方 法
WebView支持javascript-1
Android 软件工程师系列课程
如果访问的页面中有Javascript,则webview必须设置支持 Javascript。
设置WebView对象支持javascript:
WebSettings set = webview.getSettings(); set.setJavaScriptEnabled(true);
WebView控件
Android 软件工程师系列课程
在Android手机中内置了一款高性能webkit内核浏览器,在SDK中 封装为一个叫做WebView组件。 什么是webkit
WebKit是Mac OS X v10.3及以上版本所包含的软件框架。 同时, WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源 项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一 些组件。
/wiki/static/map/API/examples/
乘车路线查询
Android 软件工程师系列课程
选择“服务示例”下的“公交导航结果面板”,如图:
乘车路线查询----javasecript脚本
Android 软件工程师系列课程
javascript脚本:
第一章
--android应用与javascript交互
本门课程目标
Android 软件工程师系列课程
学完本门课程后,你能够实现android应用程序访 问internet第三方资源,并使用第三方资源增强应 用证流程及方法。 使用OAuth认证开发腾讯微博应用。 掌握google官方服务使用的方法。 使用google提供的位置服务实现定位功能。 使用google map实现应用程序的位置服务。
WebView中链接的跳转-2
Android 软件工程师系列课程
webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.d("test", url); view.loadUrl(url); return true; } });
javascript代码:
<a href="javascript:window.demo. calljava('123')"> calljava demo </a>
Android 软件工程,您只 需简单的操作,即可在自己的应用中构建功能丰富、 个性化的、高效的地图功能。其中包含了构建地图基 本功能的多个接口,提供了诸如位置搜索移劢 设备和浏览器的两套API。 地址: /wiki/static/index.htm
webview.loadUrl("file:///android_asset/test.html"); btnfind.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //调用javaebView中 webview.loadUrl(“javascript:busline('洪山','街道口')"); } });
Android 软件工程师系列课程
WebView不Html页面交互
WebView中链接的跳转-1
Android 软件工程师系列课程
点击WebView加载网页里面的链接时,在当前的 webview里跳转,还是跳转到浏览器后加载。
setWebViewClient(WebViewClient client) 定义WebViewClient对象,重写对象的 shouldOverrideUrlLoading(WebView view, String url)方法。 WebViewClient主要帮助WebView处理各种通知、请求事件。
WebView控件可以在自己的应用程序中显示本地或Internet上的网 页,可以将WebView当成一个完整的浏览器使用。 Webview丌仅支持HTML、CSS等静态元素,还支持javascript, 并且可以实现和java方Байду номын сангаас的相互调用。
WebView加载Html页面
Android 软件工程师系列课程
javascript代码:
<script type="text/javascript"> function show(content){ document.getElementById("countent").innerHTML= "这是我的 javascript调用. 这是:"+content; } </script> <p id="countent">html原始数据</p>言编写的应用程序 接口,它能够帮劣您在网站中还提供了诸如本地搜索、路线规划等数据服务 ,你可以根据自己的需要进行选择。 Api示例地址:
乘车路线查询----android客户端
Android 软件工程师系列课程
android客户端代码:
WebView webview = (WebView)findViewById(R.id.webview); Button btnfind = (Button)findViewById(R.id.btnfind); webview.getSettings().setJavaScriptEnabled(true);
WebChromeClient主要辅助WebView处理Javascript的对话框、网 站图标、网站title、加载进度等
java中处理javascript响应-2
Android 软件工程师系列课程
class MyWebChromeClient extends WebChromeClient { @Override public boolean onJsAlert(WebView view, String url, String message,JsResult result) { Toast.makeText(getApplicationContext(), message, 2000) .show(); return true; } } webview.setWebChromeClient(new MyWebChromeClient()); //将javascript中的alert()对话框信息使用toast方式提示,onJsAlert返 回值表示是否使用android对话框显示javascript对话框信息。
WebView支持javascript-3
Android 软件工程师系列课程
java代码:
webview.getSettings().setJavaScriptEnabled(true); webview.addJavascriptInterface(new Object() { public void calljava(final String num) { handler.post(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, num, 2000).show(); } }); } }, "demo");
本章目标
Android 软件工程师系列课程
WebView的应用。 实现WebView调用javascript脚本。 在Html页面调用activity方法。 实现WebView不Activi程师系列课程
使用WebView实现用户界面
WebView支持javascript-2
Android 软件工程师系列课程
java代码:
webview.loadUrl("file:///android_asset/test.html"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { webview.loadUrl("javascript:show('activity传过来的数据')"); } });
android应用中可以使用WebView加载Html页面来作为用户界面。 WebView可以加载Web端Html页面和本地Html页面,也可加载 HTML代码。 WebView显示网页的两种方式:
Web页面: loadUrl(““); 本地文件(本地文件存放在assets目录中 ) loadUrl(“file:///android_asset/XX.html“);
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" <script type="text/javascript" src="/api?v=1.3"> </script> </head> <script type="text/javascript"> var map = new BMap.Map("container"); map.centerAndZoom("武汉"); map.addControl(new BMap.NavigationControl()); function busline(start,end){ var transit = new BMap.TransitRoute(map, {renderOptions: {map: map, panel: "results"}}); transit.search(start, end); } </script>
WebView加载HTML代码: loadData(String data, String mimeType, String encoding)
► data:html脚本字符串 ► mimeType:文件类型, text/html, image/jpeg ► encoding:编码格式, utf-8, base64