android - 读取所有联系人数据

标签 android contacts contactscontract

我使用的是 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

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

最佳答案

查看 Contact Contract 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/

关于android - 读取所有联系人数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534551/

相关文章:

android - targetSdk版本设置

android - 有没有办法检索 TextView 的可见行数或范围?

android - 将用户联系人的照片从手机添加到 ListView? :D

android - 在 Android 上通过 PhoneGap 发送短信

android - 为什么我无法更新 android 中的电子邮件地址?

android - 使用 Robolectric 的 ShadowNfcAdapter 对 NFC 帮助程序类进行单元测试

android - 检测通知栏是否被下拉

c# - 使用 Google 联系人 API 以编程方式将 "New Custom Field"添加到 Google 联系人

android - 显示名称未更新 Email.Content_URI

android - 从联系人选择器中过滤掉 Facebook 联系人