如何使用复选框从手机中选择多个联系人

时间:2013-03-25 17:11:53

标签: android android-contacts

我正在尝试以编程方式从手机中选择可用的联系人,我正在使用以下代码

        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        startActivityForResult(intent, 1);

但问题是如何使用联系人页面中的复选框一次选择多个联系人?

2 个答案:

答案 0 :(得分:12)

您必须以编程方式阅读联系人,并将其显示在ListView的{​​{1}}中。在Activity项目中使用CheckBox,并允许选择多个项目。查找ListView的简单示例/教程,然后从那里开始。

为什么最好创建自定义ListView而不是使用ListView有几个原因:

  1. 可能无法按照您的要求选择倍数。
  2. 即使您找到了一种选择倍数的方法,它也会有所不同 每个操作系统版本和设备,可能不适用于所有操作系统。
  3. 如果可以在任何设备上安装多个应用程序 处理Intent(Intent.ACTION_GET_CONTENT);,然后选择一个选择器 用户和他将不得不选择其中之一。用户的选择 可能不支持选择多个联系人。

  4. 以下是读取系统联系人的示例:

    ACTION_GET_CONTENT

答案 1 :(得分:3)

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