java - 每个联系人都有一个电话号码的光标

标签 java android cursor android-contentprovider simplecursoradapter

我知道如何在游标中获取联系人姓名和号码,但是当我将它们放在 ListView 中时,我会在不同的行中获取同一联系人的多个号码,即如果一个联系人有多个号码,则所有这些号码都是显示。如何为每个联系人只选择一个号码?

Uri uri = Phone.CONTENT_URI;
String[] projection = { Phone.DISPLAY_NAME, Phone.NUMBER, Phone._ID };
String sortOrder = Phone.DISPLAY_NAME + " COLLATE LOCALIZED ASC";

Cursor cursor = managedQuery(uri, projection, null, null, sortOrder);

提前感谢您的帮助!

最佳答案

如果我没看错,并且您只想为每个 DISPLAY_NAME 显示一个数字而忽略所有其他数字,则可以使用此 hack:

String selection = "1) GROUP BY (" + Phone.DISPLAY_NAME;
Cursor cursor = managedQuery(uri, projection, selection , null, sortOrder);

编辑 简短说明:这是一种 sql 注入(inject):它将在查询的 WHERE 部分插入 1,使其始终为真,并添加 GROUP BY,不受 managedQuery()

支持

关于java - 每个联系人都有一个电话号码的光标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8252957/

相关文章:

java - 使用 Java 泛型和 Java 8 lambda 传递带有 Callable 的 void 方法

java - 控制java中的循环执行速度 - Android

mysql - 帮我解决这个 MySql 游标代码

Android 列 '_id' 不存在

mysql - 将数据库中的所有 DATETIME 值动态转换为 MySQL 中的 UTC

Java 8 : how to get the first number greater than 10 in a stream?

java - 使用 apache activiti 检查下一个任务是否是结束事件

java - 将 Java Swing 应用程序直接呈现为视频的方法

android - 由: kotlin.UninitializedPropertyAccessException: lateinit property idLeague has not been initialized引起

android - 生产时未收到 INSTALL_REFERRER