0

При попытке получить список контактов из android с помощью приведенного ниже кода он возвращает несколько учетных записей, таких как google/gmail, whatsapp и soma (количество учетных записей зависит от количества содержимого resolver возвращает для этой большой копии контакта!). Пожалуйста, помогите мне удалить его.Реестр Android-контента Возвращает все учетные записи, активированные на мобильном телефоне Нет

cursor1=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI ,null, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME +" ASC");    
startManagingCursor(cursor1); 
String[] from = {ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.Phone._ID,}; 
    int[] to = {android.R.id.text1, android.R.id.text2}; 
listadapter = new SimpleCursorAdapter(getBaseContext(), android.R.layout.simple_list_item_2, cursor1, from, to);   
setListAdapter(listadapter); 

ответ

1

Simpy попробуйте нижеследующий код, который содержит больше проверок, а также проверьте, имеет ли он номер телефона или нет. Но контакты вашего устройства andorid должны быть хорошо организованы.

private void displayContacts() { 

     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)); 
        String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
        if (Integer.parseInt(cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) { 
        Cursor pCur = cr.query(
           ContactsContract.CommonDataKinds.Phone.CONTENT_URI, 
           null, 
           ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?", 
           new String[]{id}, null); 
        while (pCur.moveToNext()) { 
         String phoneNo = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)); 
         Toast.makeText(NativeContentProvider.this, "Name: " + name + ", Phone No: " + phoneNo, Toast.LENGTH_SHORT).show(); 
        } 
        pCur.close(); 
       } 
      } 
     } 
    } 

Вы также можете получить некоторые Filteration счета здесь, как отфильтровывать то, что это приложение счет с помощью этого ниже код, который извлекает то, что приложение контакты с контактами телефона:

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

ArrayList<String> myWhatsappContacts = 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. 
    myWhatsappContacts.add(c.getString(contactNameColumn)); 
} 
+0

Нет приятель до сих пор его тиражирование !! ! –

+0

будет отображаться дубликат, потому что они дублируются в вашем телефоне, но если они объединяют учетную запись с тем же именем, то не будет повторяющихся значений с одинаковым именем, все учетные записи будут считаться одинаковыми. – Androider

+0

уже слил его !!! но все равно нет друзей, и мой список контактов на мобильном телефоне кажется прекрасным и без дублирования, а приложения, такие как imo, показывают только один контакт, я просто хочу, чтобы это было так :( –