有没有办法显示联系人姓名而不是联系人号码?
此方法返回收件箱中的电话号码,但我需要这些名称:
更新:代码已从原始代码更改。
注意:我尝试更改联系人号码以在INBOX中显示其对应的联系人姓名。我没有试图获得所有可用联系人姓名的列表。
public ArrayList<String> fetchInboxNumbers() {
ArrayList<String> sms = new ArrayList<String>();
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor cursor = getContentResolver().query(uriSms,
new String[] { "_id", "address", "date", "body" }, null, null,
null);
cursor.moveToFirst();
while (cursor.moveToNext()) {
String address = cursor.getString(1); // Displays phone number
sms.add(address);
}
return sms;
} // END FETCHINBOX
答案 0 :(得分:2)
有没有办法显示联系人姓名而不是联系人 号码?
以下代码段会帮助您。
String whereName = ContactsContract.Data.MIMETYPE + " = ?";
String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
while (nameCur.moveToNext()) {
String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
}
nameCur.close();
答案 1 :(得分:0)
我想补充一下@Vipul Shah的答案。
最好只添加一个只需要检索的列的投影吗?
new String [] { ContactsContract.CommonDataKinds.Phone._ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }
此致