마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

통화기록 조회 CallLog.Calls.CACHED_NAME값이 -1로 나옵니다.

0 추천

(USB 디버깅으로 폰에서 직접 디버깅 중입니다.)

통화목록 조회시

휴대전화에 저장된 이름을 표시하려 합니다.

API를 보면 CACHE에 저장된 경우만 반환한다고 합니다.

-1이 나오는 이유는 이때문인데

그럼 휴대전화 통화목록처럼 저장된 사람 이름이 나오게끔 하려면 어떤 처리를 해야할까요?

 

현재 코드 간략히 적어봅니다.

int nameNum = c.getColumnIndex(CallLog.Calls.CACHED_NAME);
Log.d("nameNum", ""+nameNum);
String nameStr = "NoName";
if(nameNum != -1){
    nameStr = c.getString(nameNum);
}
Log.d("nameStr", ""+nameStr);
D/nameNum: -1
D/nameStr: NoName
moonnara (160 포인트) 님이 2023년 4월 10일 질문

2개의 답변

0 추천
이름이 없을 때는 이름 대신 전화번호를 보여주거나 Contacts를 검색해 보시면 어떨까요?
spark (227,530 포인트) 님이 2023년 4월 11일 답변
spark님이 2023년 4월 11일 수정
조언 감사합니다.
찾아 보겠습니다!
0 추천
private String getPhoneNumSearchName(ContentResolver crs, String pn){
    Log.d("getPhoneNumSearchName pn=", pn);
    Uri uri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(pn));
    String[] projection = new String[] {ContactsContract.PhoneLookup.DISPLAY_NAME};
    String name = "";

    Cursor cursor = crs.query(uri, projection, null, null, null);
    if (cursor != null) {
        if (cursor.moveToFirst()){
            name = cursor.getString(0);
        }

        cursor.close();
    }
    return name;
}
Contacts 주소록 검색으로 해결완료
spark님 감사합니다 ^^
익명사용자 님이 2023년 4월 11일 답변
...