java - 如何获得所有 Phone.DISPLAY_NAME_PRIMARY 和电话号码大小一次
问题描述
我想在其中获取所有联系人姓名以及电话号码大小。现在我正在使用两个查询:
1.
crContacts = getContentResolver()
.query(ContactsContract.Contacts.CONTENT_URI, null,null, null, null)
然后2。
while (crContacts.moveToNext()) {
id = crContacts.getString(crContacts.getColumnIndex(ContactsContract.Contacts._ID));
Cursor crPhones = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = ?", new String[]{id}, null);
}
有什么方法可以得到一次phone number size
而 Phone.DISPLAY_NAME_PRIMARY
无需查询两次?
解决方案
不确定电话号码大小是什么意思,但您可以轻松访问所有Phone.CONTENT_URI
字段以及Contacts.CONTENT_URI
表中的隐式连接,这是一个示例:
String[] projection = new String[] { Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER };
Cursor c = cr.query(Phone.CONTENT_URI,projection,null,null,null);
while (c.moveToNext()) {
long contactId = c.getLong(0);
String name = c.getString(1);
String phone = c.getString(2);
Log.i("Phones", "got contact phone: " + contactId + " - " + name + " - " + phone);
}
您可以在此处阅读有关查询任何数据表时获得的隐式连接的更多信息:https ://developer.android.com/reference/android/provider/ContactsContract.Data#columns
推荐阅读
- fusionauth - 如何使用应用程序 A 的两个因素和应用程序 B 的没有两个因素的相同用户登录?
- javascript - 如何在新 div 中包装每三个唯一的子元素
- database - 如何模拟 ping 命令
- jmeter - 即使在生产中关闭了代码,我的 Jmeter 脚本也通过了
- repo - 回购初始化停止总是检查最新的回购
- docker - 运行 Docker 构建时出现未指定的错误 (0x80004005)
- heap-memory - 在 cloudwatch 中收集 JVM 指标,例如堆使用情况 GC 信息以获取 Fargate 服务
- sharepoint - 在 sharepoint 现代网站上嵌入最新的网络聊天
- typescript - 如何在异步方法中返回承诺?
- jquery - 在 wordpress upolad 媒体窗口上显示自定义消息?