Android SMS通过recipient_ids显示联系人姓名

时间:2014-02-06 02:12:58

标签: android sms android-contacts

下面的代码段会返回基本的短信对话数据:

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。

非常感谢您的帮助。提前谢谢!

2 个答案:

答案 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;
}

希望它有所帮助!

相关问题