首页 > 解决方案 > 如何获得所有 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 sizePhone.DISPLAY_NAME_PRIMARY无需查询两次?

标签: javaandroidandroid-contactscontactscontract

解决方案


不确定电话号码大小是什么意思,但您可以轻松访问所有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


推荐阅读