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

전화올때 전화온 번호를 연락처에서 이름을 뽑아올려고 하는데 안되네요 ㅠㅠ

0 추천

public static String SearchName(Context context , String PhoneNumber){

String name = "unKnown";
try {
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
 
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.CONTACT_ID,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME };
 
String[] selectionArgs = null;
 
String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
+ " COLLATE LOCALIZED ASC";
 
Cursor contactCursor = context.getContentResolver().query(uri, projection, null,
selectionArgs, sortOrder);
if (contactCursor.moveToFirst()) {
do {
if(PhoneNumber.equals(contactCursor.getString(1))){
return contactCursor.getString(2);                             
}
} while (contactCursor.moveToNext());
}  
} catch (Exception e) {
}    
return name;
}
 
테스트로 액티비티에다가 저함수를 사용해봤는데 잘 작동했는데

전화올때 BroadcastReceiver를 사용해서

TelephonyManager.CALL_STATE_OFFHOOK 일 경우에

이함수를 넣어서 번호를 찾게 했는데 제대로 작동을 안하네요 

문제가 뭘까요?

쓰레드를 돌려봐도 똑같네요 ㅠㅠ

 

초록귀신 (760 포인트) 님이 2014년 8월 7일 질문
초록귀신님이 2014년 8월 8일 수정

1개의 답변

0 추천
저는 mms 번호에서 이름 가져올 때 비슷한 문제를 겪었는데, sort order 를 주면 결과가 없다고 그러고, 안 주니까 잘 나오고 하더라구요.

저기서 나온 결과를 log에 표시해서 어떤게 나오는지 확인해보세요
쎄미 (162,410 포인트) 님이 2014년 8월 11일 답변
...