【问题标题】:can i get a photo directlly from calllog.calls provider我可以直接从 calllog.calls 提供商那里获取照片吗
【发布时间】:2015-01-13 21:42:25
【问题描述】:

我想从通话记录中获取联系人照片(如果他有的话)。

现在我知道我可以获取号码,然后向联系人提供者查询联系人 ID。

但是我想知道是否有更好的方法可以直接从 callLog.calls 表中获取照片 uri。 让我相信这可能是事实,在文档中我遇到了 2 个有趣的领域:

1)CACHED_LOOKUP_URI - 用于查找与电话号码关联的联系人(如果存在)的缓存 URI。

2)CACHED_PHOTO_ID - 与电话号码关联的图片的缓存照片 ID(如果存在)。

现在是否可以完成,如果不能完成,我想知道这些字段的用途, 谢谢

【问题讨论】:

  • @Gabriel H 你找到解决方案了吗,因为我在加载图像时遇到了同样的问题,但是从其他光标加载照片需要多个数字的时间
  • @Sagar2869767 不,我不久前离开了那个特定的项目,不幸的是,还没有真正找到比获取联系号码和照片更好的方法,我只能建议以异步方式执行此操作这样就不会因加载时间而阻塞应用程序(放置默认图片并交换它)
  • 感谢您的建议,目前我正在以异步方式加载。仍在寻找更好的解决方案

标签: android android-contacts calllog


【解决方案1】:

您可以获得它的 ID。然后您必须从 ContactsContract 中检索实际图像。

imageDataRow = c.getInt(c.getColumnIndex(CallLog.Calls.CACHED_PHOTO_ID));
Cursor c = mContext.getContentResolver().query(ContactsContract.Data.CONTENT_URI, new String[]{
            ContactsContract.CommonDataKinds.Photo.PHOTO
    }, ContactsContract.Data._ID + "=?", new String[]{
            Integer.toString(imageDataRow)
    }, null);
    byte[] imageBytes = null;
    if (c != null) {
        if (c.moveToFirst()) {
            imageBytes = c.getBlob(0);
        }
        c.close();
    }
Bitmap photo = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);

【讨论】:

    【解决方案2】:

    大多数情况下,我使用 Glide 来设置视图中的图像。 SDK>=23

    c.getString(c.getColumnIndex(CallLog.Calls.CACHED_PHOTO_URI));
    

    SDK

    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(num));
            Cursor cursor = getContext().getContentResolver().query(uri, null, null, null, null);
    
            if (cursor != null && cursor.moveToNext()) {
                image_uri = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.PHOTO_URI));
                //Log.d(TAG, "image_uri "+image_uri);
            }
            if(cursor !=null)
                cursor.close();
    

    【讨论】:

      猜你喜欢
      • 2015-01-09
      • 2023-03-26
      • 2017-06-18
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多