该文章或问题已被删除

Android 的 Native.js 获取 通信录 联系人信息

Android 获得用户通信录联系人,通过 Native.js 调用打开手机自带的联系人页面,选择联系人,并返回数据。



 1.打开安卓系统通信录

var main = plus.android.runtimeMainActivity(); //获行当前的页面对象,activity 相当于一个页面
var Intent = plus.android.importClass('android.content.Intent');   
var contract=plus.android.importClass('android.provider.ContactsContract');  
var intent = new Intent(Intent.ACTION_PICK,contract.Contacts.CONTENT_URI);

main.onActivityResult=function(requestCode,resultCode, data) 
                    {	
                    	console.log("dd:"+resultCode);
                    	if(requestCode==0 && resultCode==-1) //返回代号0 ,resultCode=-1,代表用户点击了选择联系人
                    	{
   var userPhone=getContactPhone(main,contract,data);// 返回联系人姓名和手机号码
   document.querySelector(".userphone").innerHTML='<p>联系人:'+userPhone.name+'</p> <p>手机号:'+userPhone.phone+' </p>';
                    	}
                    }
			  	
main.startActivityForResult(intent,0); //打开通信录

 2.用户选择联系人时,返回联系人姓名和手机号码 

           //返回一个JSON,包含联系人姓名,和手机号码
            function getContactPhone(main,contract,data)
            {
            	   var contact_data={};
            	   plus.android.importClass(data);  //把data转化java对象
                   var contactData=data.getData(); //处理返回的data	,      
                   var resolver=main.getContentResolver();
                   plus.android.importClass(resolver);  //把resolver转化java对象
                   var cursor=resolver.query(contactData,null,null,null,null);
                   plus.android.importClass(cursor);  //把resolver转化java对象
                   if(cursor!=null)
                    {
                          cursor.moveToFirst(); //开始往下读取
                         //读取当前索引的联系人姓名
                     var nameIndex=cursor.getColumnIndex(contract.Contacts.DISPLAY_NAME);         
                          contact_data.name=cursor.getString(nameIndex);
                      //取得电话号码,因为手机号码和联系人存在不同的地方
                     var ContactId=cursor.getString(cursor.getColumnIndex(contract.Contacts._ID));
                     var phone =resolver.query(contract.CommonDataKinds.Phone.CONTENT_URI, null,contract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
                         if(phone != null)
                          {
                            phone.moveToFirst();
                            contact_data.phone=phone.getString(phone.getColumnIndex(contract.CommonDataKinds.Phone.NUMBER));
                          }
                          cursor.close();
                          phone.close();
                    } 
            	   return contact_data;
            }


示例, 复制可以直接使用

<!doctype html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<link href="css/mui.min.css" rel="stylesheet" />
		<style>
			.userphone p{ font-size:16px; color: red;}
		</style>
	</head>
	<body>
		<center style="margin-top: 145px;">
			<input type="button" value="打开通信录,选择联系人" id="select" />
			 <br /> <br />
			 <div class="userphone">
			 </div>
		</center>	
		<script src="js/mui.min.js"></script>
		<script type="text/javascript">
			mui.init();
			
			mui.plusReady(function()
			{
			  mui("body").on("tap","#select",function()
			  {
			  	var main = plus.android.runtimeMainActivity(); //获行当前的页面对象,activity 相当于一个页面
			    var Intent = plus.android.importClass('android.content.Intent');   
			    var contract=plus.android.importClass('android.provider.ContactsContract');  
                var intent = new Intent(Intent.ACTION_PICK,contract.Contacts.CONTENT_URI);
        
                   
                    //监听通信录返回时,获得数据
                    main.onActivityResult=function(requestCode,resultCode, data) 
                    {	
                    	console.log("dd:"+resultCode);
                    	if(requestCode==0 && resultCode==-1) //返回代号0 ,resultCode=-1,代表用户点击了选择联系人
                    	{
                    		var userPhone=getContactPhone(main,contract,data);
                    		    document.querySelector(".userphone").innerHTML='<p>联系人:'+userPhone.name+'</p> <p>手机号:'+userPhone.phone+' </p>';
                    	}
                    }
			  	
			  	    main.startActivityForResult(intent,0); //打开通信录
			  });
			
             });
             
             //返回一个JSON,包含联系人姓名,和手机号码
            function getContactPhone(main,contract,data)
            {
            	   var contact_data={};
            	   plus.android.importClass(data);  //把data转化java对象
                   var contactData=data.getData(); //处理返回的data	,      
                   var resolver=main.getContentResolver();
                   plus.android.importClass(resolver);  //把resolver转化java对象
                   var cursor=resolver.query(contactData,null,null,null,null);
                   plus.android.importClass(cursor);  //把resolver转化java对象
                   if(cursor!=null)
                    {
                          cursor.moveToFirst(); //开始往下读取
                         //读取当前索引的联系人姓名
                     var nameIndex=cursor.getColumnIndex(contract.Contacts.DISPLAY_NAME);         
                          contact_data.name=cursor.getString(nameIndex);
                      //取得电话号码,因为手机号码和联系人存在不同的地方
                     var ContactId=cursor.getString(cursor.getColumnIndex(contract.Contacts._ID));
                     var phone =resolver.query(contract.CommonDataKinds.Phone.CONTENT_URI, null,contract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId, null, null);
                         if(phone != null)
                          {
                            phone.moveToFirst();
                            contact_data.phone=phone.getString(phone.getColumnIndex(contract.CommonDataKinds.Phone.NUMBER));
                          }
                          cursor.close();
                          phone.close();
                    } 
            	   return contact_data;
            }
				
		</script>
	</body>
</html>
点赞 0      收藏 0

0 个评论

正在加载...

这里空空如也,快来补一刀!

加载更多

回答问题或评论文章请先 或者 注册