-1

嘿,我有一个程序员在让我的手机图像显示在应用程序中时遇到了一些麻烦。以下代码是他用来获取联系人图片的代码:

private long getContactIdFromNumber(String number) {
    Cursor c = null;
    try {
        String[] projection = new String[] { Contacts.Phones.PERSON_ID };
        Uri contactUri = Uri.withAppendedPath(
                Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number));
        c = getContentResolver().query(contactUri, projection, null, null,
                null);

        if (c.moveToFirst()) {
            long contactId = c.getLong(c
                    .getColumnIndex(Contacts.Phones.PERSON_ID));
            return contactId;
        }
    } finally {
        c.close();
    }
    return -1;
}

private boolean initPhoto() {
    boolean result = true;
    try {
        contactPhoto = People.loadContactPhoto(getApplicationContext(),
                ContentUris.withAppendedId(People.CONTENT_URI,
                        getContactIdFromNumber(phoneNumber)),
                R.drawable.header, null);
    } catch (Exception e) {
        result = false;
    }
    return result;
}

if (initPhoto()) {
   contact1.setImageBitmap(contactPhoto);
   contact2.setImageBitmap(contactPhoto);
   contact3.setImageBitmap(contactPhoto);
}

我联系了我的电话号码和图片,但它从未加载到应用程序中。他应该在我上面发布的代码中寻找什么,以确保它获取正确的电话号码?

4

2 回答 2

0

原来数字格式不正确。它正在寻找 xxxxxxxxxx,而电话中的号码是这样的 (xxx)xxx-xxxx,所以它永远不会匹配。

于 2012-12-19T13:03:58.410 回答
0

您是否必须使用联系人而不是 ContactsContract?API 级别 5 中已弃用联系人。

如果您尝试为电话号码加载照片,请使用 ContactsContract.PhoneLookup。android.provider.ContactsContract.PhoneLookup 的参考文档中有一个示例。查询该表将返回联系人的 LOOKUP_KEY。使用它来查询 ContactsContract.Contacts.Photo。

于 2012-12-18T21:20:36.743 回答