0

有没有办法显示联系人姓名而不是联系人号码?

此方法返回收件箱中的电话号码,但我需要名称:

更新:代码从原来的改变。

注意:我正在尝试更改联系人号码以在收件箱中显示其相应的联系人姓名。我不想获取所有可用联系人姓名的列表。

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
4

2 回答 2

1

有没有办法显示联系人姓名而不是联系人号码?

关注 Snippet 将对您有所帮助。

        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();
于 2012-06-11T08:56:29.297 回答
0

我想添加到@Vipul Shah 的答案。

添加仅包含您需要检索的列的投影不是更好吗?

new String [] { ContactsContract.CommonDataKinds.Phone._ID, 
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }

问候

于 2012-06-11T09:11:41.730 回答