2014-01-12 107 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

聯繫是一類,我把聯繫人的姓名,照片,numbes – 2014-01-12 12:24:39

+0

你只是檢索所有的電話號碼在這裏。我需要的是查詢多個號碼的聯繫人。完全不同,真的。 –

相關問題