我有一个应用程序,通过BroadcastReceiver将收到的消息显示为Toast。我目前正在使用SmsMessage.getOriginatingAddress()方法,它给出了发件人的编号,如果存储在联系人中,如何修改它以获取发件人的相应名称?
答案 0 :(得分:1)
您需要查询联系人以获取其余数据。
首先使用电话号码查询联系人ID。
Cursor cursor = context.getContentResolver().query(
Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, address),
new String[] { Contacts.Phones.PERSON_ID }, null, null, null);
if (cursor != null) {
try {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
Long id = Long.valueOf(cursor.getLong(0));
if (Log.DEBUG) Log.v("Found person: " + id);
return (String.valueOf(id));
}
} finally {
cursor.close();
}
}
然后使用第一个查询中的id查询联系人姓名。
Cursor cursor = context.getContentResolver().query(
Uri.withAppendedPath(Contacts.People.CONTENT_URI, id),
new String[] { PeopleColumns.DISPLAY_NAME }, null, null, null);
if (cursor != null) {
try {
if (cursor.getCount() > 0) {
cursor.moveToFirst();
String name = cursor.getString(0);
if (Log.DEBUG) Log.v("Contact Display Name: " + name);
return name;
}
} finally {
cursor.close();
}
}
您可以将这两个查询somehow.
组合在一起