2012-01-27 63 views
0

是否可以从我的应用程序读取联系人列表中的多个联系人? 我发现的是如何接收联系人列表,并通过列表循环。在android中阅读联系人

How to read contacts on Android 2.0

但有可能从contacts.do的列表中选择其中的几个,我需要选择我选择的通讯录创建一个单独的布局,并从联系人列表中的数据加载布局??请帮忙。

+0

它看起来像你说的是两个不同的东西读取联系人:你说的是程序读取来自ContactsContractProvider联系人?还是你在谈论使用CONTACT_PICK意图选择联系人? – 2012-01-27 05:48:14

回答

0

显然你可以从联系人列表中选择你所选择的联系人。但是你只需要在查询中找到一个合适的“where”子句(即你想从列表中获得什么类型的联系人)。

是的,你需要创建单独的布局来显示它们。

例如:与电话号码

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, ContactsContract.Contacts.HAS_PHONE_NUMBER+"='true'", null, null); // gives you the list of contacts who has phone numbers 

while (cursor.moveToNext()) { 

    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID)); 
    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null); 
    while (phones.moveToNext()) { 
     String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));     
     } 
     phones.close(); 
} 

希望获得接触,我知道你的要求correctly.If不,请让我知道!

+0

实际上它不是'where'子句。我想要的是通过复选框的帮助来选择一些联系人(由新xml中的联系人提供)。您认为这可以在同样的方式??? – scooby 2012-01-27 05:08:08

+0

所以你的意思是,你正在一个屏幕上填充所有联系人,每个联系人都有一个复选框,并且你想重新选择其中的复选框被选中? – Hiral 2012-01-27 05:17:12

+0

如果是这样,那么您需要将选定联系人的ID存储在数组中,然后再从ContentResolver中查询它们以将其填充到列表视图中。 – Hiral 2012-01-27 05:24:08

-1
  1. 基本上你需要通过与他们独特的 ID叫CONTACT_ID所有联系人进行迭代。

  2. 避免在循环中的游标内使用游标。

试试这个演示应用程序。看看如何快速将其以适当的方式机器人

Source code attached

+0

尽管这个链接可能回答这个问题,但最好在这里包含答案的重要部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – 2015-09-16 07:16:50

+0

当然..我会提供一些信息 – 2015-09-16 07:31:35