2012-06-11 230 views
0

有没有办法显示联系人姓名而不是联系人号码?如何将联系人号码更改为联系人姓名?

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

UPDATE:代码从原来的改变。

注意:我试图更改联系人号码以在INBOX中显示其对应的联系人姓名。我不想获取所有可用联系人名称的列表。

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 

回答

2

是否有显示联系人名称,而不是接触 号码的方法吗?

以下代码将帮助您。

 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(); 
+0

我意识到我在我刚才发布的代码犯了一个错误。这是我正在使用的版本。我正在阅读短信收件箱中的号码,但显示的是电话号码。你知道如何将上面的代码应用到那个? – SpicyWeenie

0

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

不是更好地添加投影只有你需要检索的列?

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

问候

相关问题