一下文章引自网络快照

http://203.208.37.132/search?q=cache:65WdqffxH-UJ:konshi.blogspot.com/2009/12/android-20.html+ContactsContract&cd=16&hl=zh-CN&ct=clnk&gl=cn&inlang=zh-CN&client=aff-avalanche&st_usg=ALhdy2-Kg5_1uawrMLIyiSfUHm1PLeA1GQ

如果使用了
import
android.provider.Contacts;
import android.provider.Contacts.People;
就要特別注意一下,
因為在android 2.0 SDK當中不建議使用,
請改用
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;

要取得聯絡人的姓名sample code如下:
final Cursor people = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);

while(people.moveToNext())
{
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.DISPLAY_NAME);
String contact = people.getString(nameFieldColumnIndex);
}
people.close();
奇怪的事,如果要取得聯絡人的電話
如果用
int nameFieldColumnIndex = people.getColumnIndex(PhoneLookup.NUMBER);
String phone = people.getString(nameFieldColumnIndex);

nameFieldColumnIndex return回來的值總是 ─1,

上網google了一下,找到瞭解法,

1. 首先找到目標聯絡人的 _ID,例如要找第一個聯絡人的_ID
Cursor target = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
target.moveToFirst();
String contactId = cursor.getString(
target.getColumnIndex(ContactsContract.Contacts._ID));

2. 接著透過_ID,來找電話號碼,電話號碼可能不只有一個,所以先判斷有無電話號碼

String IsPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

3. 如果有電話,接著再去query電話號碼

if( (Integer.parseInt(
IsPhone) > 0) )
{
Cursor phoneNumber = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
while (phones.moveToNext())
{
String strPhoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

}
}

** 如果要查詢e-mail,程式如下
Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null);

while (emails.moveToNext())
{
String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

}

另外

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);   while (cursor.moveToNext()) {    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));    if (Boolean.parseBoolean(hasPhone)) {Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);     while (phones.moveToNext()) {      String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));}     phones.close();    }    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,null, null);    while (emails.moveToNext()) {                 String emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.CommonDataColumns.DATA));}    emails.close();   }   cursor.close();

 

更多相关文章

  1. Android获取webView快照与屏幕截屏的方法
  2. 【Android 内存优化】Android Profiler 工具常用功能 ( 监测内存
  3. android webview 截图快照
  4. android View的快照与屏幕的截屏
  5. 一道 LeetCode 的多种解法,打消了我的自以为是!
  6. 「复制带随机指针的链表」的一个很巧妙解法
  7. 【五分钟】看完一道有装逼解法的算法题
  8. 【三分钟】买卖股票的最佳时机 II 的另类解法
  9. 动画:回文数的三种解法 | 法解种三的数文回:画动

随机推荐

  1. 前Sun开发人员为Android,iOS等其他移动平
  2. Android 上传头像(文件)到服务器
  3. android 实现QQ好友列表(扩展listview:Exp
  4. Android 广播接收者(具体例子)
  5. android 消息机制(2)
  6. Android(安卓)Toast 详解
  7. android IPC 机制
  8. Android系统下的动态Dex加载
  9. Android Framework解析
  10. Android(安卓)画图 之 Matrix(一)