2016-11-17 6 views
1

Я написал код, который возвращает все контакты, которые находятся на моем телефоне Android. , но когда я запускаю его на своем телефоне Android, я вижу, что даже если у меня 600 контактов, я получаю только мой код. 173 контактаПочему я не могу получить все контакты на моем телефоне?

Как получить все контакты? Почему я получаю только 173 из них?

Код:

private void CollectAllContacts(Activity activity){ 
     ArrayList<ContactData> contactDataList = new ArrayList<ContactData>(); 


    try { 

     ContentResolver cr = activity.getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); 
     if (cur.getCount() > 0) { 
      while (cur.moveToNext()) { 
       ContactData newContact = new ContactData(); 

       String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
       String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

       newContact.setId(id); 
       newContact.setDisplayName(name); 

       contactDataList.add(newContact); 
      } 
     } 
    } 
    catch(Exception e) 
    { 
      // write to log. 
    } 
} 

ответ

1

я столкнулся же проблемой. Я решил это, используя намерения. Вы можете попробовать это

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts")); 
      pickContactIntent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers 
      startActivityForResult(pickContactIntent, 100); 

затем onActivityResult Вы можете обращаться с этим

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 100 && resultCode == getActivity().RESULT_OK && null != data) { 
     Uri uri = data.getData(); 
     String[] projection = new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 
       ContactsContract.CommonDataKinds.Phone.NUMBER}; 

     Cursor people = getActivity().getContentResolver().query(uri, projection, null, null, null); 
     int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 

     people.moveToFirst(); 
     do { 
      String phoneNumber = people.getString(indexNumber); 
      phoneNumber = phoneNumber.replaceAll("[-]", "").replaceAll(" ", ""); 


     } while (people.moveToNext()); 

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