2016-11-17 3 views
1

私は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

私は同じ問題に直面していました。私は意図を使って解決しました。あなたは、あなたが扱うことができるonActivityResultこの

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); 

を試すことができ、それ

@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()); 

    } 
} 
関連する問題