2015-06-15 4 views
1

Я написал контактную синхронизацию приложения. Он синхронизирует контакты с сервера на устройство. Когда синхронизация выполняется с пользователем [email protected], я хочу получить доступ к хадиму всех контактов. Но он получает все контакты в устройстве, не фильтрует пользователь haduy. Я только хочу получить контакт с учетной записью haduy @ lvsolution.Получить контакты из фильтра устройства Android по типу учетной записи

public void getContact() 
{ 
    String phone = null; 
    String name = null; 
    listContact.clear(); 
    ContentResolver cr = getContentResolver(); 
    Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
      null, null, null, null); 

    if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
      if (Integer.parseInt(cur.getString(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
       System.out.println("name : " + name + ", ID : " + id); 
       // get the phone number 
       Cursor pCur = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, 
         ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = ?", 
         new String[]{id}, null); 
       while (pCur.moveToNext()) { 
        phone = pCur.getString(
          pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
        System.out.println("phone" + phone); 
       } 
       Contact contact = new Contact(name,phone); 
       listContact.add(contact); 
       pCur.close(); 
      } 
     } 
    } 
} 
+0

http://stackoverflow.com/questions/16810795/filter-contacts-except-groups-of-account-type может быть полезно –

+0

увидеть мой ответ здесь: http://stackoverflow.com/a/ 26820544/2252830 и измените 'selection' так, что это' ContactsContract.Data.MIMETYPE + 'в (?,?) И "+ RawContacts.ACCOUNT_TYPE +" =? "' Также добавьте свой тип учетной записи в 'selectionArgs' – pskink

ответ

2

Вы можете получить контакты из account_type из RawContatcs следующим образом.

String yourAccountType="";//ex: "com.whatsapp" 
    Cursor c = getContentResolver().query(
      RawContacts.CONTENT_URI, 
      new String[] { RawContacts.CONTACT_ID, RawContacts.DISPLAY_NAME_PRIMARY }, 
      RawContacts.ACCOUNT_TYPE + "= ?", 
      new String[] { yourAccountType }, 
      null); 

    ArrayList<String> contactList = new ArrayList<String>(); 
    int contactNameColumn = c.getColumnIndex(RawContacts.DISPLAY_NAME_PRIMARY); 
    while (c.moveToNext()) 
    { 
     // You can also read RawContacts.CONTACT_ID to read the 
     // ContactsContract.Contacts table or any of the other related ones. 
     contactList.add(c.getString(contactNameColumn)); 
    } 
    c.close(); 
+0

. это работает или нет? –

+0

hii Krishna Я хочу найти тип счета на основе номера телефона? –

+1

@pradeepbishnoi возможно. получить идентификатор контакта с номера телефона, а затем получить информацию о сыром контакте (тип учетной записи) с идентификатора контакта с помощью RawContacts. –