首页 > 移动平台 > 详细

如何获取android系统中的联系人和电话号码

时间:2015-04-03 18:46:27      阅读:169      评论:0      收藏:0      [点我收藏+]

android系统的联系人数据库是非常的复杂,并不是一个简单的表就能搞定的。

要简单的查询用户名和电话号码,首先要查询到姓名,然后再进局姓名去查询电话号码,一个姓名可能对应多个电话号码:

    // These are the Contacts rows that we will retrieve.
    static final String[] CONTACTS_SUMMARY_PROJECTION = new String[]{
            ContactsContract.Contacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME,
            ContactsContract.Contacts.CONTACT_STATUS,
            ContactsContract.Contacts.CONTACT_PRESENCE,
            ContactsContract.Contacts.PHOTO_ID,
            ContactsContract.Contacts.LOOKUP_KEY,
}
 Uri baseUri = ContactsContract.Contacts.CONTENT_URI;
        // Now create and return a CursorLoader that will take care of
        // creating a Cursor for the data being displayed.
        String select = "((" + ContactsContract.Contacts.DISPLAY_NAME + " NOTNULL) AND ("
                + ContactsContract.Contacts.HAS_PHONE_NUMBER + "=1) AND ("
                + ContactsContract.Contacts.DISPLAY_NAME + " != ‘‘ ))";

        return new CursorLoader(ContactActivity.this.getApplicationContext(), baseUri,
                CONTACTS_SUMMARY_PROJECTION, select, null,
                ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");


List<Map<String, String>> list = new ArrayList<>();
        while (data.moveToNext()) {

            Map<String, String> map = new HashMap();
            String name = data.getString(data.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
            String ContactId = data.getString(data.getColumnIndex(ContactsContract.Contacts._ID));

            Cursor phone = getContentResolver().query(
                    ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                    null,
                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + ContactId,
                    null,
                    null);
            while (phone.moveToNext()) {
                String Number = phone.getString(phone.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                if (Number != null) {

                    map.put(name, Number);
                }
            }

            list.add(map);
        }

  

如何获取android系统中的联系人和电话号码

原文:http://www.cnblogs.com/fangjianbin/p/4390559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!