2012-05-04 5 views
4

Мне нужно иметь возможность выбирать несколько контактов в Android. Поток выглядит следующим образом:Android Multiple Contacts Chooser (с возможностью выбора номера телефона)

  1. Пользователь нажимает кнопку, которая открывает приложение «Контакты».
  2. Однако, вместо того, чтобы выбирать один контакт, мне нужно иметь возможность выбирать несколько контактов (в том же запуске намерения).
  3. Если у контакта несколько телефонных номеров, мне нужно, чтобы пользователь мог выбрать номер телефона, который он хочет выбрать.

Эта функция уже присутствует на моем Android-телефоне Samsung (при запуске 2.3 Gingerbread), когда я нажимаю «Контакты» в приложении «Сообщения». Смотрите скриншот ниже:

enter image description here

enter image description here

enter image description here

+0

это точно то, что вы хотите http://www.quicktips.in/how-to-create-multi-select-listview-android-with-custom-adapter/ –

ответ

0

Вы должны написать это все самостоятельно. Вы можете использовать провайдер ContactsContract для запроса всех контактов с телефонными номерами, а затем для выбранного контакта вы можете запросить все номера телефонов для этого контакта. Вы можете отображать результаты в действиях или диалогах по своему усмотрению.

4

Существует не встроенный способ сделать это, поэтому вам нужно выполнить большую часть работы самостоятельно. К счастью, это не так сложно.

Дисплей

Для отображения контактов вы можете использовать либо ListView с режимом множественного выбора выбор, или вы можете создать собственный адаптер и привязать его к обычному ListView. Я не думаю, listview с multi-select позволит вам помещать что-либо кроме текста для каждой строки, но вам придется копать глубже, чтобы узнать.

Я использовал метод адаптивного адаптера для чего-то очень похожего (кроме частичных номеров телефонов). Это довольно легко сделать, и я нахожу, что пользовательские адаптеры действительно полезны в долгосрочной перспективе.

Custom Adapter Listview Tutorial

С установкой пользовательского адаптера, вы можете создавать объекты данных со всей информацией для человека, в том числе их имя и номер (а) телефона. В getView вашего пользовательского адаптера вы можете решить, что/как и где отображать каждую часть информации.

Сбор информации

Вы должны будете использовать ContactContract API, чтобы получить информацию для контактов.

Reading Contact Info

Reading ALL phone numbers for a Contact

0

К сожалению, этот код не поддерживается для всех версий андроид

Я знаю, что это своего рода поздно, но хотел бы поделиться этим! Я нашел неполный код в сети и после взлома моей головы я наконец нашел ответ! В основном вы запускаете сборщик и позволяете ему возвращать данные в экстренных случаях =]

В сети не было полного ответа, поэтому надейтесь, что это поможет какой-то душе!

Наслаждайтесь:

public void pickContact(View v){ 
    try { 
     Intent phonebookIntent = new Intent("intent.action.INTERACTION_TOPMENU"); 
     phonebookIntent.putExtra("additional", "phone-multi"); 
     startActivityForResult(phonebookIntent, PICK_CONTACT); 
     // PICK_CONTACT IS JUST AN INT HOLDING SOME NUMBER OF YOUR CHOICE 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public String getData(String contact, int which) 
{ 
    return contact.split(";")[which]; 
} 

public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    final int URI = 0; 
    final int NUMBER = 1; 

    if (RESULT_OK != resultCode) return; 
    Bundle contactUri = data.getExtras(); 
    if (null == contactUri) return; 

    ArrayList<String> contacts = (ArrayList<String>)contactUri.get("result"); 
    Toast.makeText(getApplicationContext(), getData(contacts.get(0),NUMBER), Toast.LENGTH_SHORT).show(); 
} 
Смежные вопросы