2010-08-08 3 views
1

나는 순간 내가 가진, 연락처가 적어도 하나 개의 전화 번호가있는 경우 결정하는 방법을 쓰기 위해 노력하고 있어요이 :안드로이드 HAS_PHONE_NUMBER

public boolean hasPhone() { 
Cursor phones = this.map.getContentResolver().query(
    ContactsContract.Contacts.CONTENT_URI, 
    null, 
    ContactsContract.Contacts._ID + "=" + this.contactId, 
    null, 
    null 
); 
boolean has = false; 
if(phones.moveToFirst()) { 
    do {   
    if(Integer.parseInt(phones.getString(phones.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
     has = true; 
     break; 
    } 
    } while(phones.moveToNext()); 
} 
return has; 
} 

방법은 항상 내가 연락처를 알고에도 불구하고 false를 반환 문제의 전화 번호가 있습니다. 내 머리를 찢어에 대한 생각으로 또한 나는,

어떤 도움도 대단히 감사하겠습니다 등, 나는 또한 우편 주소를 얻기 위해 사용으로 contactId의 올바른 알고 : P

감사합니다.

+0

디버거를 사용하여 버그가 어디 있는지 평가하는 것이 좋습니다. phones.moveToFirst가 true를 반환합니까? phones.getColumnIndex는 어떻습니까? –

+0

안녕하세요 귀도, 답장을 보내 주셔서 감사합니다. 아니요 moveToFirst가 true를 반환하지 않습니다. 이것은 그 이드와 접촉이 존재하지 않는다는 것을 의미합니까? – Kanodi

+0

[this] (http://developer.android.com/reference/android/database/Cursor.html#moveToFirst (\))에 따르면 커서가 비어 있으면 false를 반환합니다. 그래서, 당신의'query (...)'는 어떤 행도 반환하지 않습니다. – Stephen

답변

1

시도해보십시오. 그 작동하는지 확인이 라인

ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + this.contactId, 

에 다음 줄

ContactsContract.Contacts._ID + "=" + this.contactId, 

를 교체합니다.