Android从数据中获取联系人照片。电子邮件查询

2023-12-07

我正在制作一个自动完成字段,通过显示名称和电子邮件查询联系人。当某人在过滤后单击所需的联系人时,该联系人将被添加到包含其电子邮件、显示姓名和图片(如果有)的列表中。

到目前为止,除了让照片出现之外,我已经完成了所有事情。以下是我运行查询来获取电子邮件、显示名称、ID 和照片 ID 的方法。

    return mContent.query(Email.CONTENT_URI,
              PROJECTION, filter, null, null);

其中投影是:

 PROJECTION = new String[] {ContactsContract.Contacts._ID,
              ContactsContract.Contacts.DISPLAY_NAME,
              ContactsContract.Contacts.PHOTO_ID,
                Email.DATA
            };

这个可以满足我的需要并返回所有数据。但我在调试此问题期间注意到的一件事是,联系人 ID 与针对特定显示名称针对 ContactsContract.Contacts.CONTENT_URI 运行查询不同。

例如,我运行的测试通过运行 Contacts.CONTENT_URI 获取所有联系人,给了我一个图像和 ID 为 152 的联系人。但是,针对 Email.CONTENT_URI 的查询为我提供了同一联系人的 id 452 (使用相同的显示名称和电子邮件地址)。因此,当我尝试获取包含 Id 452 的内容 uri 的照片时,它会返回该照片不存在,但如果我尝试获取 152 的照片,它会完美运行。

是什么导致了这个问题?我如何获得正确的用户 ID?是否有任何我可以运行来获取联系人 ID 的关系查询,或者可能是在这个查询的帮助下获取它的正确方法。

谢谢。

EDIT

我发现这是在挖掘旧代码。可能对任何人都有帮助。

所以完整的查询:

String[] PROJECTION = new String[] { ContactsContract.RawContacts._ID,
            ContactsContract.Contacts.DISPLAY_NAME, ContactsContract.Contacts.PHOTO_ID,
            Email.DATA, ContactsContract.CommonDataKinds.Photo.CONTACT_ID };

                String order = " CASE WHEN " + ContactsContract.Contacts.DISPLAY_NAME
                        + " NOT LIKE '%@%' THEN 1" + " ELSE 2 END, "
                        + ContactsContract.Contacts.DISPLAY_NAME + " COLLATE NOCASE";
                String filter = Email.DATA + " NOT LIKE '' ) GROUP BY ( " + Email.DATA;

then its

getContentResolver().query( Email.CONTENT_URI, PROJECTION, filter, null, order);


当您想要访问联系人照片时,需要指定联系人照片 URI,例如使用以下方法:

public Uri getContactPhotoUri(long contactId) {
    Uri photoUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, contactId);
    photoUri = Uri.withAppendedPath(photoUri, ContactsContract.Contacts.Photo.CONTENT_DIRECTORY);
    return photoUri;
}

但对于 contactId 您必须使用:

String id = ContactsContract.CommonDataKinds.Photo.CONTACT_ID;
long contactId = Long.parseLong(id);

请注意,一个常见的错误是使用ContactsContract.Contacts._ID反而ContactsContract.CommonDataKinds.Photo.CONTACT_ID

我希望这可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android从数据中获取联系人照片。电子邮件查询 的相关文章

随机推荐

  • 通过其内部字段获取枚举

    有带有内部字段的枚举 类似地图 现在我需要通过其内部字段获取枚举 写了这个 package test Test enum to test enum public enum TestEnum ONE 1 TWO 2 THREE 3 priva
  • node.js 相当于 python 的 if __name__ == '__main__' [重复]

    这个问题在这里已经有答案了 我想检查我的模块是否被包含或直接运行 我怎样才能在node js中做到这一点 Node js 文档描述另一种方法来做到这一点 这可能是首选方法 当文件直接从 Node 运行时 require main 将设置为其
  • 配置:错误:C编译器无法创建可执行文件-Buildozer kivy到android调试

    输入我的问题 他们可以跳过它 您好 我正在尝试编译 apk 应用程序 但由于缺少我的系统未带来的库和应用程序以及 buildozer 和 kivy 要求中未提及的库和应用程序 我总是遇到很多问题 在安装了很多库来解决以前的问题后 我陷入了这
  • 如何使用 WordPress 链接多个 CSS 文件

    我知道要链接您的 WordPress 主目录style css您使用的文件 然而 我有相当多的 CSS 文件需要链接到主 PHP 文件 例如滑块 图片框等 我不太确定我会怎么做 因为仅适用于名为的样式表styles css我的其他样式表都有
  • Java方法声明中参数的最大数量

    Java 中的方法可以拥有的最大参数数量是多少 为什么 我在 64 位 Windows 系统上使用 Java 1 8 StackOverflow 上所有关于此问题的答案都说技术限制是 255 个参数 但没有具体说明原因 准确地说 静态为 2
  • 使用字典将 alamofire 中的 JSON 数据解析为数组

    我正在尝试解析来自 alamorefire 的 JSON 数据 如下所示 import UIKit import Alamofire import SwiftyJSON class ViewController UIViewControll
  • Ruby 中的字符串和符号有什么区别?

    Ruby 中的字符串和符号有什么区别 什么时候应该使用其中一种 主要区别在于表示单个值的多个符号是相同的 而字符串则不然 例如 irb main 007 0 gt test object id gt 83618 irb main 008 0
  • @property 与 ARC 的定义:强还是保留?

    使用 Xcode 4 2 和 ARC 我注意到自动生成的代码NSManagedObject属性仍然是这样的 property nonatomic retain NSString someString 1 不应该retain现在被替换为str
  • Spring值注入无法从属性中获取值

    我有一堂这样的课 Component public class FaultsConfiguration private int interval Autowired public FaultsConfiguration Value faul
  • Raphael 路径调整大小并相对于容器移动

    我正在尝试缩放 移动使用 Raphael api 创建的 SVG 路径 我希望路径能够整齐地适合容器 无论容器有多大 我已经搜索了参考资料 网络 但我仍然在努力让它发挥作用 如果有人能告诉我为什么这不起作用 我会很高兴 这个小提琴向你展示了
  • 如何生成以文本作为 ytick 标签的绘图

    我刚刚开始了解 Python 库pandas and matplotlib 你能举例说明如何生成与此类似的图吗matplotlib 右侧的 y 轴列出了数据实例的名称 下面的 x 轴代表与每个实例相关的一些值 数据采用 csv 格式 类似于
  • 更改android中应用程序标题的字体

    我有一个字体 我想更改 android 中操作栏标题的字体 有没有办法设置这样的标题字体 this setTitle myTitle toUpperCase this setTypefaceofTitle tf 这不是复制问题 此链接上的那
  • 将 long 解析为负数

    code public class Main public static void main String a long t 24 1000 3600 System out println t 25 System out println 2
  • 在Python中根据值的接近程度对值进行聚类(机器学习?)[重复]

    这个问题在这里已经有答案了 我有一个在一组对象上运行的算法 该算法产生一个分值 该分值指示集合中元素之间的差异 排序后的输出是这样的 1 1 5 6 1 5 10 22 23 23 50 51 51 52 100 112 130 500 5
  • 对于输入字符串:“Mat [ 0*0*CV_32FC1, isCont=true, isSubmat=false, nativeObj=0x78a0dff700, dataAddr=0x0 ]” - 填充矩阵时出错

    我正在 android 上使用 opencv 开发图像分割应用程序 但使用分水岭算法 我正在打开一个图像并创建一个具有相同图像大小的蒙版 并为该蒙版的所有行和列传递 0 但是 在下一步中 即遍历 0 的数组并将其添加为该数组中的坐标时 出现
  • 在 python 中使用 scipy curve_fit 拟合 boxcar 函数时出现问题

    我无法让这辆棚车正常工作 我明白了 OptimizeWarning 无法估计参数的协方差 类别 优化警告 并且输出系数没有改善到超出起始猜测 import numpy as np from scipy optimize import cur
  • 针对 Google 帐户关联的操作

    以下文档描述here 我使用隐式授权设置了帐户链接 并发现在使用浏览器 操作控制台以及 Android 版 Google Home 应用程序进行测试时效果良好 不幸的是 在该应用程序的 iPhone 版本上 用户身份验证大多数时候都会挂起
  • 在任何文件中打印 Perl 警告而没有“使用警告”或 -w

    我有很多经常被调用的旧 Perl 代码 我一直在编写一个新模块 突然间我在 Apache 的 error log 中收到很多警告 它们针对当前正在使用的每个模块 例如 my variable variable masks earlier d
  • UrlFetch 相当于 CURL -u "<用户名>:<密码>"

    我有使用 GAS 进行 CURL 调用的经验headers and payload 但我从未使用过 CURL 命令 u之前的选项 根据 API 规范 我必须使用 u选项 我只是不知道如何将其转换为天然气 到目前为止 这是我的代码 funct
  • Android从数据中获取联系人照片。电子邮件查询

    我正在制作一个自动完成字段 通过显示名称和电子邮件查询联系人 当某人在过滤后单击所需的联系人时 该联系人将被添加到包含其电子邮件 显示姓名和图片 如果有 的列表中 到目前为止 除了让照片出现之外 我已经完成了所有事情 以下是我运行查询来获取