【转】android通过浏览器得到手机数据

现在的移动平台有Android、iOS、Windows Phone等好几种,同一款应用程序移植到不同的平台要从头做过,花费的力气很大。如果换做Web页面就很容易跨平台了,不管什么系统,打开浏览器就可以使用。但是普通的Web页面有很多不方便,比如无法使用本地的资源,像摄像头、通讯录等。而PhoneGap就是介于原生应用与普通Web页面之间的。它是一个开源的开发框架,它通过浏览器,可以轻松的实现跨平台。开发人员利用它,就可以使用HTML、JavaScript、CSS来完成应用的开发,并且也可以调用本地的摄像头、通讯录等资源。在某一个平台开发完成后,通过比较少的调整,就可以发布到另外的平台。

今天我看了一下PhoneGap,并且小试了一下做了一个查看通讯录的Demo。

首先按照官方的教程 http://docs.phonegap.com/en/1.5.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android,完成一个HelloWorld。

然后修改www目录下的index.html为以下内容:

 

[html]   view plain copy
  1. <!DOCTYPE HTML>  
  2.   
  3. <html>  
  4.   <head>  
  5.     <meta contentType="text/html; charset=utf-8"/>  
  6.     <title>Contact Example</title>  
  7.     <style type="text/css">  
  8.         .contact{  
  9.             padding:5px;  
  10.             border-bottom:1px solid gray;  
  11.         }  
  12.     </style>  
  13.     <script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>  
  14.     <script type="text/javascript" charset="utf-8" src="jquery-1.7.2.min.js"></script>  
  15.     <!--script type="text/javascript" charset="utf-8" src="jquery.mobile-1.0.1.js"></script-->  
  16.     <script type="text/javascript" charset="utf-8">  
  17.       
  18.       
  19.       
  20.     $(function(){  
  21.     // Wait for PhoneGap to load  
  22.     //  
  23.     document.addEventListener("deviceready", onDeviceReady, false);  
  24.   
  25.     // PhoneGap is ready  
  26.     //  
  27.     function onDeviceReady() {  
  28.         var options = new ContactFindOptions();  
  29.         var fields = ["displayName", "phoneNumbers"];  
  30.         navigator.contacts.find(fields, onSuccess, onError);  
  31.     }  
  32.   
  33.     var list = $("#contacts");  
  34.     function onSuccess(contacts) {  
  35.         for (var i=0; i<contacts.length; i++) {  
  36.            /*  console.log("Display Name = " + contacts[i].displayName);*/  
  37.           $("<p class='contact'/>").text(contacts[i].displayName)  
  38.           .data("name", contacts[i].displayName)  
  39.           .data("number", contacts[i].phoneNumbers[0].value)  
  40.           .click(function(){  
  41.               $("#name").text($(this).data("name"));  
  42.               $("#number").text($(this).data("number"));  
  43.               $("#detail").show();  
  44.               $("#contacts").hide();  
  45.           })  
  46.           .appendTo(list);  
  47.         }  
  48.     }  
  49.   
  50.     // onError: Failed to get the contacts  
  51.     //  
  52.     function onError(contactError) {  
  53.         alert('onError!');  
  54.     }  
  55.       
  56.     $("#back").click(function(){  
  57.         $("#detail").hide();  
  58.         $("#contacts").show();  
  59.     });  
  60.       
  61.     });  
  62.       
  63.     </script>  
  64.   </head>  
  65.   <body>  
  66.     <h1>通讯录</h1>  
  67.     <div id="contacts"></div>  
  68.     <div id="detail" style="display:none">  
  69.         姓名:<span id="name"></span><br/>  
  70.         手机号:<span id="number"></span><br/>  
  71.         <div style="text-align:center;margin-top:10px"><button id="back" style="width:90px;height:60px;">返回</button></div>  
  72.     </div>  
  73.   </body>  
  74. </html>  

这里我用到了JQuery,需要把jquery下载回来放到www目录。之前我还把jquery.mobile也引入到页面中来了,这样的话Button的值会显示两遍(比如会显示两个返回,一个显示在Button上面,一个显示在Button左边)。可能是jquery.mobile与谁有冲突。

然后贴一下效果图:

首先展示通讯录列表,点击任一行查看详细。

     

 

 

 

转自:http://blog.csdn.net/nairuohe/article/details/7422661

猜你喜欢

转载自gdfdfg-tech.iteye.com/blog/1944252