Efficient way to load all contacts and all phone numbers (Android 2.0)

前端 未结 1 1131
清酒与你
清酒与你 2020-12-15 01:06

Is there a way of getting all the phone numbers for all contacts without doing a separate query for each contact? (using Android 2.0+). It\'s really slow if you have over 10

相关标签:
1条回答
  • 2020-12-15 01:30

    Check if the below code helps

        public ArrayList<PhoneContactInfo> getAllPhoneContacts() {
        Log.d("START","Getting all Contacts");
        ArrayList<PhoneContactInfo> arrContacts = new ArrayList<PhoneContactInfo>();
        PhoneContactInfo phoneContactInfo=null;     
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        Cursor cursor = context.getContentResolver().query(uri, new String[] {ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone._ID}, null, null, ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME + " ASC");
        cursor.moveToFirst();
        while (cursor.isAfterLast() == false)
        {
            String contactNumber= cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));  
            String contactName =  cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            int phoneContactID = cursor.getInt(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone._ID));
    
    
            phoneContactInfo = new PhoneContactInfo();
            phoneContactInfo.setPhoneContactID(phoneContactID);             
            phoneContactInfo.setContactName(contactName);                   
            phoneContactInfo.setContactNumber(contactNumber); 
            if (phoneContactInfo != null)
            {
                arrContacts.add(phoneContactInfo);
            }
            phoneContactInfo = null; 
            cursor.moveToNext();
        }       
        cursor.close();
        cursor = null;
        Log.d("END","Got all Contacts");
        return arrContacts;
    }
    
    0 讨论(0)
提交回复
热议问题