2011-01-02 4 views
0

나는 다음과 같은 코드를 사용하여 연락처 목록을 읽으려고하고있는 수를 반환 NUMBER_KEY 이유 :안드로이드 : 역순으로

ContentResolver cr = getContentResolver(); 
Cursor cur = cr.query(People.CONTENT_URI,null, null, null, null); 
if (cur.getCount() > 0) { 

while (cur.moveToNext()) 
{ 
    String id = cur.getString(cur.getColumnIndex(People._ID)); 
     Cursor personCur = cr.query(Contacts.Phones.CONTENT_URI, 
       null, 
       Contacts.Phones.PERSON_ID +"= ?"+          Contacts.Phones.NUMBER_KEY , 
        new String[]{id}, null); 

      String phoneKey = ""; 
      while (personCur.moveToNext()) { 
       phoneKey = personCur.getString(personCur.getColumnIndex(Contacts.Phones.NUMBER_KEY)); 

      } 

문제는 전화 번호가 054- 경우 역순으로 phoneKey 복귀 의미이다 123-4567 값은 7654321450

이 문제에 대한 설명서를 찾을 수 없습니다. 문제를 해결하는 방법을 알려주세요. 또는 예상 된 결과입니까?

감사 -Z

답변

2

첫째, Contacts.Phones.NUMBER_KEY이되지 않습니다. 두 번째 이유는이 값이 필요한 이유는 무엇입니까? 이것은 전화 번호가 아니라 "정규화 된"전화 번호입니다. 코드 사용 방법에 전화 번호를 사용하려면 Contacts.Phones.NUMBER를 사용하십시오.

어쨌든 구형 전화를 대상으로하지 않는 이상 사용하지 않는 것이 좋습니다.

================

전화 번호는 쉽게 일치 위해 반전 스트립 핑에 저장된다. SQL에서 LIKE 연산자를 사용하면 도움이됩니다.

일반 SQL 사용자의 경우 NUMBER_KEY LIKE가 '% 1234'이고 NUMBER_KEY가 '4321 %'인 곳을 사용하는 것처럼 보일 수 있습니다. 그러나 db 엔진의 경우 끝에 와일드 카드를 사용하는 것이 훨씬 쉽습니다 (효율적인) 효율성은 수신 전화 발신자 ID 조회의 주요 요인입니다.

그런데 눈치 채지 못했을 수도있는 대부분의 휴대 전화 (안드로이드에 대해서만 이야기하는 것이 아니라)가 발신자 번호 조회의 전체 번호와 일치하지 않습니다. 내 모든 Nokia 전화에서 016 12345678 (실제 번호가 아님)이라고 말한 번호가 있습니다. 다른 번호 016 99345678에서 전화를 받으면 Mr X가 전화를 걸고 있음을 보여줍니다. 마지막 몇 자릿수 만 비교합니다 !!!

관련 문제