【问题标题】:How to correctly get photo of contact?如何正确获取联系人照片?
【发布时间】:2011-11-12 16:52:33
【问题描述】:

我的 google 联系人与 facebook 联系人(带照片)和 Skype 联系人(带照片)相关联。

我选择 Skype 照片作为联系人(通过通讯录应用程序)。地址簿显示带有所选(Skype)照片的联系人。

启动我的应用程序。通过联系人 ID 从 ContactsContract.Contacts.CONTENT_URI 请求照片 ID。将照片“加载”到 ImageView。一切似乎都很好——照片已加载。完成我的应用程序。

我选择 facebook 照片作为联系人(通过通讯录应用程序)。地址簿显示与所选(facebook)照片的联系人。

启动我的应用程序。再次通过联系人 ID 请求照片 ID。接收到的照片 ID 与之前的 ID 不同。将照片“加载”到 ImageView。照片尚未加载。 LogCat:“relolveUri 在错误的位图 uri 上失败:...”。为什么???

我的部分代码:

Cursor photoCursor = managedQuery(
    ContactsContract.Contacts.CONTENT_URI,
    new String[]{ ContactsContract.Contacts.PHOTO_ID },
    ContactsContract.Contacts._ID + "=?",
    new String[]{ contactId },
    null);

String photoId = photoCursor.getString(photoCursor.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
Uri photoUri = Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, photoIdByContatId);

ImageView imageView = (ImageView)findViewById(R.id.photo);
imageView.setImageURI(photoUri);

【问题讨论】:

    标签: android photo contact


    【解决方案1】:

    试试这个,

     Cursor photoCursor = managedQuery(
    
                    new String[]{ContactsContract.Contacts._ID + "=?", 
                    String.valueOf(ContactsContract.Contacts.Photo.MIMETYPE+ "=?")},
                   new String[]{contactId, 
    String.valueOf(ContactsContract.CommonDataKinds.Photo.CONTENT_ITEM_TYPE) }
    null);
    

    【讨论】:

    • MIMETYPE 仅对 ContactsContract.Data.CONTENT_URI 是必需的。我从 ContactsContract.Contacts.CONTENT_URI 获得照片 ID。
    • 如果尝试从 ContactsContract.Data.CONTENT_URI 接收照片 ID,则将返回两个具有相同照片 ID 的记录。这些 id 与我的相似。
    猜你喜欢
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多