2014-01-12 5 views
1

전화 상에있는 연락처와 일치시키고 싶은 전화 번호 배열이 있습니다. 그렇게하는 가장 효율적인 방법은 무엇입니까? 따라서 기본적으로 출력은 해당 전화 번호와 일치하는 연락처 배열이어야합니다.여러 전화 번호의 연락처 검색

나는 약 ContactsContract.PhoneLookup을 알고 있지만, 한 번에 하나의 숫자 만 봅니다. 한 번에 여러 숫자를 검색하는보다 효율적인 방법이 있습니까?

감사합니다.

답변

0

내 표제에서 몇 가지 코드를 알려 드리겠습니다. 그것을보고 원하는 방식으로 편집하십시오. :)

 final Uri uri = ContactsContract.Contacts.CONTENT_URI; 
     final String[] projection = new String[] { 
       ContactsContract.Contacts._ID, 
       ContactsContract.Contacts.DISPLAY_NAME 
     }; 

     String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '1'"; 
     final String sortOrder = ContactsContract.Contacts.DISPLAY_NAME + " COLLATE LOCALIZED ASC"; 
     Cursor cur = getContentResolver().query(uri, projection, selection, null, sortOrder); 

     int Size = cur.getCount(); 
     con = new Contact[Size]; 
     for (int z = 0; z < Size; z++) 
      con[z] = new Contact(); 

     conArray = new ArrayList<Contact>(); 


     if (Size > 0) 
     { 
      while (cur.moveToNext()) 
      { 
       String Sid = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       Uri my_contact_Uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI, Sid); 
       InputStream photo_stream = ContactsContract.Contacts.openContactPhotoInputStream(getContentResolver(),my_contact_Uri);    
       BufferedInputStream buf = new BufferedInputStream(photo_stream); 
       Bitmap my_btmp = BitmapFactory.decodeStream(buf); 

       // get the phone number 
       Cursor pCur = getApplicationContext().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
         null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID 
         + " = ?", new String[] { Sid }, null); 

       con[CountCon].Add(name); 
       if (my_btmp != null) 
        con[CountCon].SetImage(my_btmp); 
       else 
        con[CountCon].SetImage(bm); 

       while (pCur.moveToNext()) 
       { 
        con[CountCon].Add(pCur.getString(pCur .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))); 
       } 
       if (con[CountCon].GetNumber(0).isEmpty()) 
        con[CountCon].Add("none"); 

       conArray.add(con[CountCon]); 

       CountCon++; 

       pCur.close(); 
      } 
     } 
     cur.close(); 
+0

연락처는 내가 연락하는 곳의 이름입니다. 이름, 사진, 마디 –

+0

여기서 모든 전화 번호를 검색하고 있습니다. 내가 필요한 것은 여러 번호에 대한 연락처 조회입니다. 전혀 다른 점이 있습니다. –

관련 문제