在Android系统中,联系人显示名称和电话号码的功能是通过访问联系人数据库实现的。在单个数据库查询中,可以使用ContentResolver和Uri来获取联系人的相关信息。以下是一个简单的示例代码,展示了如何在单个查询中获取联系人的显示名称和电话号码:
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
public class ContactsHelper {
public static List<Contact> getContacts(Context context) {
List<Contact> contacts = new ArrayList<>();
ContentResolver contentResolver = context.getContentResolver();
// 查询联系人数据库
Cursor cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String displayName = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
String id = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
// 获取联系人的电话号码
Cursor phoneCursor = contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", new String[]{id}, null);
if (phoneCursor != null) {
while (phoneCursor.moveToNext()) {
String phoneNumber = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
contacts.add(new Contact(displayName, phoneNumber));
}
phoneCursor.close();
}
}
cursor.close();
}
return contacts;
}
}
在这个示例中,我们首先使用ContentResolver和Uri来查询联系人数据库,然后遍历查询结果,获取每个联系人的显示名称和电话号码。最后,将这些信息存储在一个Contact对象列表中,并返回该列表。
需要注意的是,这个示例代码仅用于演示目的,实际应用中可能需要进行错误处理和权限检查等操作。