Multiple Choice Contact Intent

I am trying to open a contact intent and allow the user to select multi-user contacts.
Call:

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

Using this method, the user can select only one contact person. How can I let him select a lot of contacts and then get all the numbers that he has chosen?

+4
source share
1 answer

There are two to do this!

  • Set maximum limit MAX in intention:

    public static final int REQUEST_CODE_PICK_CONTACT = 1; public static final int MAX_PICK_CONTACT = 10;

    private void launchMultiplePhonePicker () {

    Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU");
    phonebookIntent.putExtra("additional", "phone-multi");
    phonebookIntent.putExtra("maxRecipientCount", MAX_PICK_CONTACT);
    phonebookIntent.putExtra("FromMMS", true);
    startActivityForResult(phonebookIntent, REQUEST_CODE_PICK_CONTACT);
    

    }

@Override public void onActivityResult (int requestCode, int resultCode, Intent data) {

if(resultCode==RESULT_OK)
{

if(requestCode == REQUEST_CODE_PICK_CONTACT  )
{

    Bundle bundle =  data.getExtras();

    String result= bundle.getString("result");
    ArrayList<String> contacts = bundle.getStringArrayList("result");


    Log.i(TAG, "launchMultiplePhonePicker bundle.toString()= " + contactsPick.toString() );

    }
}

super.onActivityResult(requestCode, resultCode, data);

}

: .


  1. :

    ListView , ListView .

. :

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null); 
while (cursor.moveToNext()) {
    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
    String hasPhone = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER)); 
    String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
    if("1".equals(hasPhone) || Boolean.parseBoolean(hasPhone)) { 
        // You know it has a number so now query it like this
        Cursor phones = myActivity.getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
        while (phones.moveToNext()) { 
            String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            int itype = phones.getInt(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));

            final boolean isMobile =
                itype == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE ||
                itype == ContactsContract.CommonDataKinds.Phone.TYPE_WORK_MOBILE;

            // Do something here with 'phoneNumber' such as saving into 
            // the List or Array that will be used in your 'ListView'.

        } 
        phones.close();
    }
}
+3

Source: https://habr.com/ru/post/1612827/


All Articles