2014-01-12 2 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 –

+0

Вы просто извлечения всех телефонных номеров здесь. Мне нужен поиск контактов для нескольких номеров. Совсем другое, действительно. –

Смежные вопросы