2012-06-11 3 views
0

연락처 번호 대신 연락처 이름을 표시하는 방법이 있습니까?연락처 이름을 연락처 이름으로 변경하려면 어떻게해야합니까?

이 방법은받은 편지함에서 전화 번호를 반환하지만 내가 대신 이름이 필요합니다

UPDATE : 코드는 원래의 변경.

참고 : 해당 연락처 이름을받은 편지함에 표시하려면 연락처 번호를 변경하려고합니다. Im 유효한 모든 접촉 이름의 명부를 얻는 것을 시도하지 않는 Im.

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

나는 내가 이전에 게시 된 코드에서 실수를 깨달았다. 이것은 내가 작업하고있는 버전입니다. 나는 내 SMS 수신함에있는 번호를 읽고 있지만 전화 번호는 보여줍니다. 위의 코드를 적용하는 방법을 알고 있습니까? – SpicyWeenie

0

@ Vipul 샤 응답에 추가하고 싶습니다.

검색해야하는 열만있는 투영법을 추가하는 것이 좋지 않습니까?

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

안부