Seletor de contatos do Android com caixa de seleção

Há muitas discussões sobre o mesmo assunto, mas depois de passar 4 horas aqui, não consegui encontrar uma descrição válida ou um link para fazer um Seletor de contatos com a Caixa de seleção.

Eu tenho uma atividade comFEITO botão elistview comcheckbox. Eu consegui mostrar os contatos corretamente. Agora quero retornar os números de telefone de contato selecionados em umbundle (Eu acho que a melhor maneira) para que eu possa obter a lista de números emonActivityResult(). Não tenho certeza se o caminho que estou seguindo está certo ou não.

Aqui está o meu código:

public class ContactPickerMulti extends ListActivity implements OnClickListener {

    // List variables
    public String[] Contacts = {};
    public int[] to = {};
    public ListView myListView;

    Button save_button;
    private TextView phone;
    private String phoneNumber;
    private Cursor cursor;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.contacts_multi);

        // Initializing the buttons according to their ID
        save_button = (Button) findViewById(R.id.contact_done);

        // Defines listeners for the buttons
        save_button.setOnClickListener(this);

        Cursor mCursor = getContacts();
        startManagingCursor(mCursor);

        ListAdapter adapter = new SimpleCursorAdapter(
                this,
                android.R.layout.simple_list_item_multiple_choice,
                mCursor,
                Contacts = new String[] { ContactsContract.Contacts.DISPLAY_NAME },
                to = new int[] { android.R.id.text1 });

        setListAdapter(adapter);
        myListView = getListView();
        myListView.setItemsCanFocus(false);
        myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

    }

    private Cursor getContacts() {
        // Run query
        Uri uri = ContactsContract.Contacts.CONTENT_URI;
        String[] projection = new String[] { ContactsContract.Contacts._ID,
                ContactsContract.Contacts.DISPLAY_NAME };
        String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + " = '"
                + ("1") + "'";
        String[] selectionArgs = null;
        String sortOrder = ContactsContract.Contacts.DISPLAY_NAME
                + " COLLATE LOCALIZED ASC";

        return managedQuery(uri, projection, selection, selectionArgs,
                sortOrder);
    }

    public void onClick(View src) {
        Intent i;
        switch (src.getId()) {
        case R.id.contact_done:

            SparseBooleanArray selectedPositions = myListView
                    .getCheckedItemPositions();
            SparseBooleanArray checkedPositions = myListView
                    .getCheckedItemPositions();
            if (checkedPositions != null) {
                for (int k = 0; k < checkedPositions.size(); k++) {
                     if (checkedPositions.valueAt(k)) {
                          String name =
                                 ((Cursor)myListView.getAdapter().getItem(k)).getString(1);
                            Log.i("XXXX",name + " was selected");
                        }
                }
            }

            break;
        }

    }
}

Eu quero enviar os números como matriz ou lista. Qual é a melhor maneira de fazer isso? Qualquer ajuda ou levando ao caminho certo é muito apreciada.

questionAnswers(2)

yourAnswerToTheQuestion