android获取联系人信息

本文介绍了一种方法来检索Android设备上的联系人信息,包括姓名、电话号码、电子邮件、即时消息(IM)、地址等,并提供了详细的代码示例。
  1. public class ContactActivity extends Activity {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.   
  8.         // 获得所有的联系人  
  9.         Cursor cur = getContentResolver().query( ContactsContract.Contacts.CONTENT_URI,   null,   null,   null,   
  10. ContactsContract.Contacts.DISPLAY_NAME      + " COLLATE LOCALIZED ASC");  
  11.         // 循环遍历  
  12.         if (cur.moveToFirst()) {  
  13.             int idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);  
  14.             int displayNameColumn = cur .getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);  
  15.   
  16.             do {  
  17.                 // 获得联系人的ID号  
  18.                 String contactId = cur.getString(idColumn);  
  19.                 // 获得联系人姓名  
  20.                 String disPlayName = cur.getString(displayNameColumn);  
  21.                   
  22.                 // 查看该联系人有多少个电话号码。如果没有这返回值为0  
  23.                 int phoneCount = cur .getInt(cur .getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));  
  24.                 Log.i("username", disPlayName);  
  25.                 if (phoneCount > 0) {  
  26.                     // 获得联系人的电话号码  
  27.                     Cursor phones = getContentResolver().query(  
  28.                             ContactsContract.CommonDataKinds.Phone.CONTENT_URI,   null
  29.                                                                ContactsContract.CommonDataKinds.Phone.CONTACT_ID   + " = " + contactId, nullnull);  
  30.                     if (phones.moveToFirst()) {  
  31.                         do {  
  32.                             // 遍历所有的电话号码  
  33.                             String phoneNumber = phones .getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
  34.                             String phoneType = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));  
  35.                             Log.i("phoneNumber", phoneNumber);  
  36.                             Log.i("phoneType", phoneType);  
  37.                         } while (phones.moveToNext());  
  38.                     }  
  39.                 }  
  40.   
  41.                 // 获取该联系人邮箱  
  42.                 Cursor emails = getContentResolver().query(  ContactsContract.CommonDataKinds.Email.CONTENT_URI,  null
  43.                                                                                                           ContactsContract.CommonDataKinds.Phone.CONTACT_ID  + " = " + contactId, nullnull);  
  44.                 if (emails.moveToFirst()) {  
  45.                     do {  
  46.                         // 遍历所有的电话号码  
  47.                         String emailType = emails .getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.TYPE));  
  48.                         String emailValue = emails .getString(emails .getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));                      
  49.                         Log.i("emailType", emailType);  
  50.                         Log.i("emailValue", emailValue);  
  51.                     } while (emails.moveToNext());  
  52.                 }  
  53.   
  54.                 // 获取该联系人IM  
  55.                 Cursor IMs = getContentResolver().query(  
  56.                         Data.CONTENT_URI,  
  57.                         new String[] { Data._ID, Im.PROTOCOL, Im.DATA },  
  58.                         Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"  
  59.                                 + Im.CONTENT_ITEM_TYPE + "'",  
  60.                         new String[] { contactId }, null);  
  61.                 if (IMs.moveToFirst()) {  
  62.                     do {  
  63.                         String protocol = IMs.getString(IMs  
  64.                                 .getColumnIndex(Im.PROTOCOL));  
  65.                         String date = IMs  
  66.                                 .getString(IMs.getColumnIndex(Im.DATA));  
  67.                         Log.i("protocol", protocol);  
  68.                         Log.i("date", date);  
  69.                     } while (IMs.moveToNext());  
  70.                 }  
  71.   
  72.                 // 获取该联系人地址  
  73.                 Cursor address = getContentResolver()  
  74.                         .query(  
  75.                                 ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI,  
  76.                                 null,  
  77.                                 ContactsContract.CommonDataKinds.Phone.CONTACT_ID  
  78.                                         + " = " + contactId, nullnull);  
  79.                 if (address.moveToFirst()) {  
  80.                     do {  
  81.                         // 遍历所有的地址  
  82.                         String street = address  
  83.                                 .getString(address  
  84.                                         .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.STREET));  
  85.                         String city = address  
  86.                                 .getString(address  
  87.                                         .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.CITY));  
  88.                         String region = address  
  89.                                 .getString(address  
  90.                                         .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.REGION));  
  91.                         String postCode = address  
  92.                                 .getString(address  
  93.                                         .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE));  
  94.                         String formatAddress = address  
  95.                                 .getString(address  
  96.                                         .getColumnIndex(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS));  
  97.                         Log.i("street", street);  
  98.                         Log.i("city", city);  
  99.                         Log.i("region", region);  
  100.                         Log.i("postCode", postCode);  
  101.                         Log.i("formatAddress", formatAddress);  
  102.                     } while (address.moveToNext());  
  103.                 }  
  104.   
  105.                 // 获取该联系人组织  
  106.                 Cursor organizations = getContentResolver().query(  
  107.                         Data.CONTENT_URI,  
  108.                         new String[] { Data._ID, Organization.COMPANY,  
  109.                                 Organization.TITLE },  
  110.                         Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"  
  111.                                 + Organization.CONTENT_ITEM_TYPE + "'",  
  112.                         new String[] { contactId }, null);  
  113.                 if (organizations.moveToFirst()) {  
  114.                     do {  
  115.                         String company = organizations.getString(organizations  
  116.                                 .getColumnIndex(Organization.COMPANY));  
  117.                         String title = organizations.getString(organizations  
  118.                                 .getColumnIndex(Organization.TITLE));  
  119.                         Log.i("company", company);  
  120.                         Log.i("title", title);  
  121.                     } while (organizations.moveToNext());  
  122.                 }  
  123.   
  124.                 // 获取备注信息  
  125.                 Cursor notes = getContentResolver().query(  
  126.                         Data.CONTENT_URI,  
  127.                         new String[] { Data._ID, Note.NOTE },  
  128.                         Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"    + Note.CONTENT_ITEM_TYPE + "'",  
  129.                         new String[] { contactId }, null);  
  130.                 if (notes.moveToFirst()) {  
  131.                     do {  
  132.                         String noteinfo = notes.getString(notes  .getColumnIndex(Note.NOTE));  
  133.                         Log.i("noteinfo", noteinfo);  
  134.                     } while (notes.moveToNext());  
  135.                 }  
  136.   
  137.                 // 获取nickname信息  
  138.                 Cursor nicknames = getContentResolver().query(  
  139.                         Data.CONTENT_URI,  
  140.                         new String[] { Data._ID, Nickname.NAME },  
  141.                         Data.CONTACT_ID + "=?" + " AND " + Data.MIMETYPE + "='"   + Nickname.CONTENT_ITEM_TYPE + "'",  
  142.                         new String[] { contactId }, null);  
  143.                 if (nicknames.moveToFirst()) {  
  144.                     do {  
  145.                         String nickname_ = nicknames.getString(nicknames  
  146.                                 .getColumnIndex(Nickname.NAME));  
  147.                         Log.i("nickname_", nickname_);  
  148.                     } while (nicknames.moveToNext());  
  149.                 }  
  150.   
  151.             } while (cur.moveToNext());  
  152.   
  153.         }  
  154.   
  155.     }  
  156.   
  157. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值