联系人 - 多项选择

时间:2016-01-10 20:24:07

标签: android android-intent

我想打开联系人并选择多个联系人并提取它的数据(电话,电子邮件,姓名等)。到目前为止,我找到了两种可行的方法:

1.创建自定义列表视图并查询所有联系人(我不喜欢这个)。

2.使用以下意图打开联系人:

Intent intent= new Intent("intent.action.INTERACTION_TOPMENU");
intent.putExtra("additional", "phone-multi");
intent.putExtra("maxRecipientCount",SELECTION_CAPACITY) 

我更喜欢意图解决方案,但在onActivityResult()我提取了一个Bundle对象(Bundle selection = data.getExtras()),其中包含一些ID和电话号码。我无法使用识别它返回的id是什么,可以用它来查询选定的联系人。

任何人都曾使用过这个意图来实现同样的事情吗?这个id返回的是什么,我测试了_id,但它是不同的。有没有人知道任何其他方法同样的事情?

1 个答案:

答案 0 :(得分:0)

我也无法使用来自Bundle的id,所以我使用Bundle返回的数字搜索联系人的显示名称,如下所示:

  String selection = "PHONE_NUMBERS_EQUAL(" + ContactsContract.Data.DATA1 + ", ?, 0)";
  String[] selectionArgs = {number};
  Cursor phoneCursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                       null, selection, selectionArgs, null);
  if (phoneCursor != null && phoneCursor.moveToFirst()) {
     if (phoneCursor.getInt(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER)) > 0) {
           String displayName = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            }
        }
   phoneCursor.close();