安卓选择通讯录联系人和获取全部联系人

来源:互联网 发布:淘宝一个月能赚多少 编辑:程序博客网 时间:2024/06/07 11:46

点击电话按钮,进入到手机通讯录,直接选择联系人,将手机号码带回。

读取联系人,所以申请权限


  1. <uses-permission android:name="android.permission.READ_CONTACTS"/>  
点击电话按钮跳转

  1. startActivityForResult(new Intent(Intent.ACTION_PICK,  
  2.                     ContactsContract.Contacts.CONTENT_URI), 0);  
实现获取号码

  1. @Override  
  2.         protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
  3.             super.onActivityResult(requestCode, resultCode, data);  
  4.             if (resultCode == Activity.RESULT_OK) {  
  5.                 // ContentProvider展示数据类似一个单个数据库表  
  6.                 // ContentResolver实例带的方法可实现找到指定的ContentProvider并获取到ContentProvider的数据  
  7.                 ContentResolver reContentResolverol = getContentResolver();  
  8.                 // URI,每个ContentProvider定义一个唯一的公开的URI,用于指定到它的数据集  
  9.                 Uri contactData = data.getData();  
  10.                 // 查询就是输入URI等参数,其中URI是必须的,其他是可选的,如果系统能找到URI对应的ContentProvider将返回一个Cursor对象.  
  11.                 Cursor cursor = managedQuery(contactData, nullnullnullnull);  
  12.                 cursor.moveToFirst();  
  13.                 // 条件为联系人ID  
  14.                 String contactId = cursor.getString(cursor  
  15.                         .getColumnIndex(ContactsContract.Contacts._ID));  
  16.                 // 获得DATA表中的电话号码,条件为联系人ID,因为手机号码可能会有多个  
  17.                 Cursor phone = reContentResolverol.query(  
  18.                         ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,  
  19.                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "  
  20.                                 + contactId, nullnull);  
  21.                 while (phone.moveToNext()) {  
  22.                     String usernumber = phone  
  23.                             .getString(phone  
  24.                                     .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
  25.                     et_mobile.setText(usernumber);  
  26.                 }  
  27.   
  28.             }  
  29.         }  

获取全部联系人


  1. // 获取联系人数据  
  2. ContentResolver cr = context.getContentResolver();  
  3. //获取所有电话信息(而不是联系人信息),这样方便展示  
  4. Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;  
  5. String[] projection = {  
  6.         ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,// 姓名  
  7.         ContactsContract.CommonDataKinds.Phone.NUMBER,// 电话号码  
  8. };  
  9. Cursor cursor = cr.query(uri, projection, nullnullnull);  
  10. if (cursor == null) {  
  11.     return null;  
  12. }  
  13. //最终要返回的数据  
  14. List<ContactInfo> result = new ArrayList<ContactInfo>();  
  15. while (cursor.moveToNext()) {  
  16.     String name = cursor.getString(0);  
  17.     String number = cursor.getString(1);  
  18.     //保存到对象里  
  19.     ContactInfo info = new ContactInfo();  
  20.     info.setName(name);  
  21.     info.setNumber(number);  
  22.     //保存到集合里  
  23.     result.add(info);  
  24. }  
  25. //用完记得关闭  
  26. cursor.close();  
  27. return result;  

  1. public class ContactInfo {  
  2.     private String name;// 姓名  
  3.     private String number;// 电话号码  
  4.     public String getName() {  
  5.         return name;  
  6.     }  
  7.     public void setName(String name) {  
  8.         this.name = name;  
  9.     }  
  10.     public String getNumber() {  
  11.         return number;  
  12.     }  
  13.     public void setNumber(String number) {  
  14.         this.number = number;  
  15.     }  
  16. }  


打电话拨号功能:

权限:


  1. <uses-permission android:name="android.permission.CALL_PHONE"/>  
代码:

  1. Intent intent = new Intent();  
  2. intent.setAction(Intent.ACTION_CALL);//ACTION_DIAL  
  3. intent.setData(Uri.parse("tel:"+"110"));  
  4. startActivity(intent); 
0 0
原创粉丝点击