【问题标题】:Android getting contact phone imageAndroid获取联系人电话图像
【发布时间】:2012-12-18 20:08:57
【问题描述】:

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

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);
}

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

【问题讨论】:

    标签: android android-contacts android-4.2-jelly-bean


    【解决方案1】:

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

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

    【讨论】:

    • 所以你的意思是我会把联系人的名字发送给那个,然后它就会知道它为那个联系人有什么图像?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      • 2015-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      相关资源
      最近更新 更多