我需要能够在Android中选择多个联系人。流程是这样的:
当我点击Messaging应用程序中的“Contacts”时,我的Samsung Android手机(运行2.3 Gingerbread)中已经存在此功能。见下面的截图:
答案 0 :(得分:4)
没有内置的方法,所以你需要自己完成大部分工作。幸运的是,这并不难。
<强>显示强>
要显示联系人,您可以使用带有多选选择模式的列表视图,也可以创建自定义适配器并将其绑定到常规列表视图。我不会认为使用multi-select列表视图会让你为每行添加除文本之外的任何内容,但你必须深入挖掘才能找到。
我已经将自定义适配器方法用于非常相似的事情(除了多个电话号码部分)。这很容易做到,我发现自定义适配器从长远来看非常有用。
Custom Adapter Listview Tutorial
使用自定义适配器设置,您可以创建包含人员所有信息的数据对象,包括其姓名和电话号码。在自定义适配器的getView中,您可以决定显示每条信息的内容/方式和位置。
收集信息
您需要使用ContactContract API来获取联系人的信息。
答案 1 :(得分:0)
你必须自己写这些。您可以使用ContactsContract
提供商查询具有电话号码的所有联系人,然后对于所选联系人,您可以查询该联系人的所有电话号码。您可以根据需要在活动或对话框中显示结果。
答案 2 :(得分:0)
很遗憾,所有Android版本都不支持此代码
我知道它有点晚了但是想分享一下! 我在网上发现了一些不完整的代码,在用它解开后我终于找到了答案! 基本上你启动选择器并让它返回extras =]
中的数据网上没有完整的答案,所以希望它对那里的灵魂有所帮助!
享受:
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();
}