读取所有联系人数据

Posted

技术标签:

【中文标题】读取所有联系人数据【英文标题】:Reading all contact data 【发布时间】:2012-09-14 02:43:38 【问题描述】:

我使用的是 android 2.3.3,API 级别 10。我想读取与他们关联的所有联系人和数据,因此例如所有电子邮件地址、电话号码、自定义字段... 我试过这样:

Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
Cursor contacts = managedQuery(contactUri, null, null, null, null );

contacts.moveToFirst();

do 
    for(int i=0;i<contacts.getColumnCount();i++)
    
         System.out.println(contacts.getColumnName(i) + ": " + contacts.getString(i));
    

    System.out.println("============\n\n");

 while (contacts.moveToNext());

contacts.close();

但是,这只给了我以下字段:

times_contacted: 0
contact_status: null
custom_ringtone: null
has_phone_number: 1
phonetic_name: null
phonetic_name_style: 0
contact_status_label: null
lookup: [removed]
contact_status_icon: null
last_time_contacted: 0
display_name: [removed]
sort_key_alt: [removed]
in_visible_group: 1
_id: 101
starred: 0
sort_key: [removed]
display_name_alt: [removed]
contact_presence: null
display_name_source: 40
contact_status_res_package: null
contact_chat_capability: null
contact_status_ts: null
photo_id: null
send_to_voicemail: 0

电话号码、电子邮件地址...在哪里?感谢您的任何提示!

【问题讨论】:

【参考方案1】:

查看联系人合约 API 示例

http://www.higherpass.com/Android/Tutorials/Working-With-Android-Contacts/

ContentResolver cr = getContentResolver();
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI,
            null, null, null, null);
    if (cur.getCount() > 0) 
    while (cur.moveToNext()) 
        String id = cur.getString(
                    cur.getColumnIndex(ContactsContract.Contacts._ID));
    String name = cur.getString(
                    cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) 
        //Query phone here.  Covered next
        
        


看看这个例子

http://code.google.com/p/android-contacts-contract-example/

【讨论】:

谢谢,google 代码示例的链接和从那里链接的教程 (app-solut.com/blog/2011/03/…) 非常有用:-)

以上是关于读取所有联系人数据的主要内容,如果未能解决你的问题,请参考以下文章

从手机读取联系人非常慢

如何将手机中的所有联系人(包括谷歌联系人)读入数组列表?

如何从android中的联系人读取电子邮件字段?

Android-读取/新增/操作系统联系人数据

使用电话号码选择联系人而不是读取电话号码时出现问题

使用 Async Task 读取电话联系人并将其设置为 AutoCompleteTextView 的适配器