我想打开联系人并选择多个联系人并提取它的数据(电话,电子邮件,姓名等)。到目前为止,我找到了两种可行的方法:
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
,但它是不同的。有没有人知道任何其他方法同样的事情?
答案 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();