在Android中加入联系人和照片表

时间:2012-02-19 19:26:50

标签: android contacts photo

我正在开发一个电话簿应用程序。我正在尝试检索联系人图片。首先,我检索了所有的联系人,然后拿走每个contact_id并在照片表上进行查询以获取图片。但是,查询所有图片的联系人需要永远。在我的模拟器中有超过1000个联系人,因此,照片桌上的1000多次点击被触发。那么,有没有办法加入这两个表并在一个查询中获取数据?

以下是我的代码。但我知道错了。刚试了一下。请有人纠正。


    String[] projection = new String[]{Contacts._ID, Contacts.DISPLAY_NAME};
    String joinCondition = "ContactsContract.Contacts._ID=ContactsContract.CommonDataKinds.Photo.CONTACT_ID";
    ContentResolver cr = context.getContentResolver();
    Uri contactUri = ContactsContract.Contacts.CONTENT_URI;
    Uri fillUri = Uri.withAppendedPath(contactUri, Contacts.Photo.CONTENT_DIRECTORY);
    Cursor cur = cr.query(contactUri, projection,
            joinCondition, null, Contacts.DISPLAY_NAME);

THX! 拉胡

2 个答案:

答案 0 :(得分:2)

您应该在列表适配器的getView方法中检索照片缩略图。这已经过优化,因此您只需处理需要在屏幕上显示的记录。所以,即使你有成千上万的联系人,你最多也要一次查询一小撮。

答案 1 :(得分:0)

您可以尝试以下方法:

    public final String[] columns = {ContactsContract.Contacts._ID, 
                ContactsContract.Contacts.DISPLAY_NAME,     
                                    ContactsContract.Contacts.PHOTO_THUMBNAIL_URI};

   Cursor c = contentResolver.query(Contacts.CONTENT_URI, columns, where, args, ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC");

这应该会返回一个包含所有联系人及其图片的光标