【问题标题】:Android Multiple Contacts Chooser (with option of choosing which phone number)Android 多联系人选择器(可选择选择哪个电话号码)
【发布时间】:2012-05-14 00:47:09
【问题描述】:

我需要能够在 Android 中选择多个联系人。流程是这样的:

  1. 用户单击打开联系人应用程序的按钮。
  2. 但是,我需要能够选择多个联系人(在同一启动意图中),而不是能够选择单个联系人。
  3. 如果一个联系人有多个电话号码,我需要用户能够选择他想要选择的电话号码。

当我在消息应用程序中单击“联系人”时,我的三星 Android 手机(运行 2.3 Gingerbread)中已经存在此功能。请看下面的截图:

【问题讨论】:

标签: android android-intent android-2.2-froyo


【解决方案1】:

没有内置的方法来执行此操作,因此您需要自己完成大部分工作。幸运的是,这并不难。

显示

要显示您的联系人,您可以使用具有多选模式的列表视图,也可以创建自定义适配器并将其绑定到常规列表视图。我不认为具有多选功能的列表视图可以让您为每一行放置除文本以外的任何内容,但您必须深入挖掘才能找到答案。

我已经将自定义适配器方法用于非常相似的事情(除了多个电话号码部分)。这很容易做到,而且我发现自定义适配器从长远来看非常有用。

Custom Adapter Listview Tutorial

通过自定义适配器设置,您可以创建数据对象,其中包含一个人的所有信息,包括他们的姓名和电话号码。在自定义适配器的 getView 中,您可以决定显示每条信息的内容/方式和位置。

收集信息

您需要使用 ContactContract API 来获取联系人信息。

Reading Contact Info

Reading ALL phone numbers for a Contact

【讨论】:

    【解决方案2】:

    你必须自己写这一切。您可以使用ContactsContract 提供程序查询具有电话号码的所有联系人,然后对于选定的联系人,您可以查询该联系人的所有电话号码。您可以根据需要在活动或对话框中显示结果。

    【讨论】:

      【解决方案3】:

      很遗憾,并非所有版本的 android 都支持此代码

      我知道有点晚了,但想分享这个! 我在网上找到了一些不完整的代码,在用它破解后我终于找到了答案! 基本上你启动选择器并让它返回额外的数据=]

      网上没有完整的答案,所以希望它对那里的一些人有所帮助!

      享受:

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

      【讨论】:

        猜你喜欢
        • 2012-06-13
        • 1970-01-01
        • 2016-10-23
        • 2018-01-08
        • 1970-01-01
        • 2017-10-06
        • 1970-01-01
        • 2014-01-19
        • 1970-01-01
        相关资源
        最近更新 更多