在SMS数据库中person这个值得到的有人说就是联系人的ID但是实际上这个值是不稳定的,这里要得到联系人信息需要通过address获得的发件人电话号码和ContactsContract.PhoneLookup.CONTENT_FILTER_URI来实现.代码如下
ContactItem getContactByAddr(Context context, final SMSItem sms) { Uri personUri = Uri.withAppendedPath( ContactsContract.PhoneLookup.CONTENT_FILTER_URI, sms.mAddress); Cursor cur = context.getContentResolver().query(personUri, new String[] { PhoneLookup.DISPLAY_NAME }, null, null, null ); if( cur.moveToFirst() ) { int nameIdx = cur.getColumnIndex(PhoneLookup.DISPLAY_NAME); ContactItem item = new ContactItem(); item.mName = cur.getString(nameIdx); cur.close(); return item; } return null; }