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从数据中获取联系人照片。电子邮件查询 的相关文章

  • 使用匕首柄作为依赖注入来处理多个改造客户端?

    我想在我的 android 应用程序中使用两个不同的后端 具有不同的响应格式 我使用 hilt 作为依赖注入 并对网络调用进行改造 这非常适合工作 因为我已经添加了第二个服务器网络文件和应用程序模块 所以它给了我错误 该错误列在最后 我需要
  • Kotlin Android Firebase 数据库哈希映射转换为类

    我正在尝试从 firebase 数据库获取数据 断点显示它正在获取数据 但看起来我没有正确地将其分配给我的班级 这会导致此异常 java lang ClassCastException 无法将 java util HashMap 转换为 班
  • 服务如何在后台运行 - Android

    今天的采访中我被问到了这个问题 什么是服务 我对此的回答是 Service 是 Android 的基本组件 它没有 UI 并且在后台运行 Service 是否在主线程上运行 不 那么它是如何在后台运行的呢 我心里一片空白 有人可以解释一下如
  • 在 Android 中使用 awt

    我有一个绘制图表的 Java Swing 应用程序 它使用 Graphics2D 调用和 awt 对象 例如 Rectangle 等 在某些时候我可能想将其移植到 Android 上 我知道我无法在 Android 上使用 Graphics
  • 在 Android 市场中以编程方式检查我的应用程序版本

    目前 我正在启动时检查应用程序版本代码 并将其与我的服务器上的最新版本代码进行匹配 并根据此匹配 我发送用户从 Android 市场获取最新更新 它运行良好 但我的问题是我必须手动更改服务器上的最新版本代码 并且我不知道新版本何时发布APK
  • 如何从Slog中查看日志

    如何查看 Slog API 生成的日志 是否有任何选项可以查看系统缓冲区中的日志 我的意思是查看我们使用的无线电缓冲区的日志 adb logcat b 无线电 而这个日志是由Android的Log类生成的 Slog API 的输出在哪里 怎
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • 突出显示列表视图项目

    我需要在触摸列表视图项目时突出显示它并保持突出显示状态 我尝试了我发现的一切 但没有任何效果 这是我的代码 这是列表视图
  • 通过配置更改保留 CoroutineScope 的干净方法,无需 ViewModel

    我知道建议是在我们的 Activity 中使用 ViewModel 这样我们就可以使用它viewModelScope 由于 ViewModel 的寿命比 Activity 的寿命长 因此我们不必取消以下作业activity onDestro
  • 本地管理的广播接收器泄漏?

    当应用程序被系统杀死时 本地 即使用 LocalBroadcastManager 管理 BroadcastReceiver 是否有可能泄漏 我需要它的具体用例是我想在活动的 onCreate onDestroy 中注册 注销 Broadca
  • Android 5 Lollipop 阴影方向或 y 偏移

    是否有可能改变 Y 偏移的阴影方向 现在我有以下布局
  • Android:从 PhoneGap 应用打开 Play 商店链接

    我想从我的phonegap 3 4 应用程序打开一个指向Google Play 商店的链接 呼唤market details id com google android apps maps导致 ActivityNotFoundExcepti
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • php向多个收件人发送邮件

    我可以通过在邮件程序中定义 id 来将电子邮件发送到一个电子邮件 id 但是当用户在表单中键入 消息和电子邮件 id 时 我无法理解如何发送到多个收件人 例如 我正在显示一个带有两个文本区域的表单 一个用于电子邮件 ID 一个用于自定义消息
  • JavaScript 点击事件在 Android 4.0.4 默认浏览器上的 Samsung Galaxy SIII 上不起作用

    我在 Android 4 0 4 上使用 Samsung Galaxy SIII 的默认浏览器时遇到了最奇怪的问题 对于以下页面 单击链接将不会触发 JavaScript 处理程序 从其中一个 div 的内容中删除单个 a 字母使它们再次工
  • Android:我的应用程序太大并给出“无法执行 dex:方法 ID 不在 [0, 0xffff]: 65536”?

    我正在尝试将我的应用程序与 Box Dropbox 和 Google Drive 集成 所有这 3 项服务都需要许多第 3 方 jar 此外 我的应用程序已经需要一些第三方 jar 现在 当我尝试从 Eclipse 运行我的应用程序时 出现
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 在两个片段之间拖放视图

    我目前正在尝试在两个片段之间实现拖放 我已经将它们添加到我的活动中 如下所示 FragmentManager fm getFragmentManager FragmentTransaction ft fm beginTransaction
  • 使用 PDFBox 在 Android 中创建 PDF

    我正在尝试通过我的 Android 应用程序创建 PDFPDFBoxapi 但出现以下错误 java lang NoClassDefFoundError org apache pdfbox pdmodel PDDocument 我已经将以下

随机推荐

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

    有带有内部字段的枚举 类似地图 现在我需要通过其内部字段获取枚举 写了这个 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从数据中获取联系人照片。电子邮件查询

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