下面的代码段会返回基本的短信对话数据:
Cursor cursor = activity.getContentResolver().query(Uri.parse( "content://mms-sms/conversations?simple=true"), null, null, null, "normalized_date desc" );
if(cursor.moveToFirst())
String recipient_ids = cursor.getString(3);
我的问题是如何根据recipient_ids获取手机的联系人数据?在这种情况下,我需要检索联系号码并联系display_name。
非常感谢您的帮助。提前谢谢!
答案 0 :(得分:3)
这就是我的应用程序中的工作原理:
private String getContactNumber(final long recipientId) {
String number = null;
Cursor c = getContentResolver().query(ContentUris
.withAppendedId(Uri.parse("content://mms-sms/canonical-address"), recipientId),
null, null, null, null);
if (c.moveToFirst()) {
number = c.getString(0);
}
c.close();
return number;
}
联系号码保存在一个名为canonical-address
的表格中
几年前它有点像马车。联系人的更新未正确传播此表。但我认为现在很好。
您基本上需要将(列表)ID解析为单个ID。然后在数据库中查询每个数据库 但是,您可以对所有ID使用一个查询。
答案 1 :(得分:3)
试试这个:
public String getContactData(String id){
String number;
Cursor phones = fa.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ id, null, null);
if(phones.moveToFirst()) {
number = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phones.close();
return number;
}
希望它有所帮助!