Android---WebView(网页中文本框调用系统联系人号码)
2011-03-21 17:45
519 查看
今天和同事共同讨论了一个关于WebView中的文本控件去获得系统联系人的功能,之前单纯的以为只是点击文本框的时候弹出系统联系人Activity就ok了。立马浮现的想法就是在java方法中实现跳转功能,然后通过Js事件调用java方法,后面才知道选中某个联系人之后还要获得联系人号码赋给文本框。当时我就单纯的以为应该实现不了吧,但后来同事一提醒,如果传递号码作为客户端页面一个Js事件的参数然后为文本框赋值的话咧。这样确实是可行的,但java调用客户端Js的方法入口在哪里咧(必须是在关闭系统联系人之后,重现展现含有WebView的Activty时调用),说到这里应该有部分人会想到一个方法:onActivityResult();对就是这个方法在关闭系统联系人Activity之后会回调。但前提是调用系统联系人时是startActivityForResult();
整个思路就是这样的下面贴一些具体代码:
Java代码:(1)点击文本框时调用Java方法弹出系统联系人(怎样Js调用Java方法在下面的Js代码中)
(2)获得联系人之后调用客户端Js[setText(var value)]方法为文本框赋值
客户端Js代码:
整个思路就是这样的下面贴一些具体代码:
Java代码:(1)点击文本框时调用Java方法弹出系统联系人(怎样Js调用Java方法在下面的Js代码中)
// 与网页进行交互的addJavascriptInterface()的方法 browser.addJavascriptInterface(new Object() { @SuppressWarnings("unused") public void getContacts() { Intent i1 = new Intent(Intent.ACTION_PICK, android.provider.Contacts.People.CONTENT_URI); startActivityForResult(i1, CODE_PHONEBOOK); } }, "xxxxxxxx");
(2)获得联系人之后调用客户端Js[setText(var value)]方法为文本框赋值
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub Cursor c = null; super.onActivityResult(requestCode, resultCode, data); if (requestCode == CODE_PHONEBOOK) {// 电话本 try { if (data != null) { c = getContentResolver().query(data.getData(), null, null, null, null); } if (c != null) { c.moveToFirst(); for (int i = 0; i < c.getColumnCount(); i++) { String name = c.getColumnName(i); String phoneNum = c.getString(i); if (name.equalsIgnoreCase("number")) { currentWebView.loadUrl("javascript:setText('" + phoneNum + "')"); break; } } c.close(); } } catch (Exception e) { e.getMessage(); } } }
客户端Js代码:
<html> <head> <script language="javascript" type="text/javascript"> function setText(xx){ document.getElementById('test').value=xx; } </script> </head> <body> <input id="test" type="text" onclick="javascript:window.xxxxxxxx.getContacts()" /> </body> </html>
相关文章推荐
- Android---WebView(网页中文本框调用系统联系人号码)
- Android---WebView(网页中文本框调用系统联系人号码)
- android 调用系统通讯录添加联系人,并将号码传值到相应的控件内
- Android强制使用WebView不调用系统或外部浏览器
- Android WebView中获取网页的title (包括调用goback)
- Android WebView的使用(禁止超链接调用其他浏览器 设置滚动条 禁止横竖屏切换重新加载网页 )
- Android开发心得——网页通过webview调用Android的图片或文件选择
- android中利用webview调用网页上的js代码和注意事项
- android开发 友盟推送点击Notification使用WebView加载url同时会调用系统浏览器的问题
- android webview 运行时不调用系统自带浏览器
- android 调用js webView网页,点击提交按钮无效(注意加上setWebChromeClient())
- android中利用webview调用网页上的js代码 Java代码调用js并传递参数
- Android实现js及webview交互之在html页面中调用系统摄像头
- Android 在WebView中调用系统下载的简单使用
- 【android】只让本应用程序的webview加载网页而不调用外部浏览器的办法
- Android实现js及webview交互之在html页面中调用系统摄像头
- Android实现js及webview交互之在html页面中调用系统摄像头
- WebView浏览网页,在APP内打开不调用系统浏览器
- Android使用webview调用系统浏览器以及项目内显示并支持图片和输入
- 网页通过webview调用Android的图片或文件选择