0

好的,我正在尝试复制创建联系人快捷方式时放置在主屏幕上的快捷方式,示例如下:

在此处输入图像描述

我有一个可用的 QuickContactBadge,单击它会显示 QuickContact 工具栏。但是,我有两件事遇到麻烦。

一是图片。我尝试使用这个问题的代码(我通过添加一个参数来传递联系人 ID 来更改它)。然后我将图像分配给我的 QuickContactBadge,如下所示:

bdg.setImageURI(getPhotoUri(cid));

它肯定会得到图片,但它得到的图片完全是错误的。如此处所示:

在此处输入图像描述

如您所见,它为 Domino's 返回的图像显然不是 Domino's 徽标。

我正在让我的联系人 ID 从此代码传递给函数:

    public static String[] ContactsProjection = new String[] {
            Contacts._ID,
            Contacts.LOOKUP_KEY, 
            Contacts.DISPLAY_NAME
    };

    public static Cursor getContacts() {
            ContentResolver cr = CoreLib.ContentResolver();
            Cursor contacts = cr.query(
                    ContactsContract.Data.CONTENT_URI, 
                    ContactsProjection, 
                    null, null, 
                    Contacts.TIMES_CONTACTED + " DESC"
            );
        return contacts;
    }

我认为这应该为我返回每条记录的正确 ID。是的?

接下来如何让缩略图像快捷方式显示的那样缩小或裁剪?

看到 QuickContactBadge 实际上并没有复制 QuickContact 快捷方式的整个外观和感觉,我有点失望,......而只是充当 QuickContact 卡的调用目标。是否有任何内置方法可以轻松复制联系人快捷方式的整体、调用、图像、文本和所有内容,而无需从头开始复制整个内容?

4

1 回答 1

0

啊哈!想出了如何获得正确的照片。虽然这似乎违反直觉,但在构建字段投影以查询联系人时,字段Contacts._IDContactsContract.Data.CONTACT_ID不是一回事。

ContactsContract.Data.CONTACT_ID是正确的传递来获取照片。使用它,现在一切都是金色的。

于 2011-05-03T01:12:33.590 回答