【问题标题】:read contacts in android在android中读取联系人
【发布时间】:2023-03-08 20:46:01
【问题描述】:

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

How to read contacts on Android 2.0

但是是否可以从联系人列表中选择其中一些。我是否需要创建一个单独的布局来选择我选择的联系人并使用联系人列表中的数据加载该布局?请帮忙。

【问题讨论】:

  • 您似乎在谈论两件不同的事情:您是在谈论以编程方式从 ContactsContractProvider 读取联系人吗?或者您是在谈论使用 CONTACT_PICK 意图挑选联系人?

标签: android android-contacts


【解决方案1】:

显然,您可以从联系人列表中选择您选择的联系人。但是您只需要在查询中找到适当的“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(); 
}

希望我能正确理解您的要求。如果没有,请告诉我!

【讨论】:

  • 实际上它与“where”子句无关。我想要的是在复选框的帮助下选择一些联系人,(由新 xml 中的联系人旁边提供。)你呢认为这可以用同样的方式完成???
  • 所以你的意思是,你在一个屏幕上填充所有联系人,每个人都有一个复选框,你想重新选择复选框被选中的联系人??
  • 如果是这样,那么您需要将所选联系人的 id 存储在一个数组中,然后再次从 ContentResolver 查询它们以将它们填充到列表视图中。
  • 呀。这就是我想要做的.. 重新选择选中复选框的联系人。简单来说,我明白了你想说的话..
  • 您是否制作了任何自定义适配器类来使用联系人填充您的列表视图?
【解决方案2】:
  1. 基本上,您需要遍历所有联系人及其唯一 id 称为contact_id。

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

试试这个演示应用。看看它以正确的 android 方式读取联系人的速度有多快

Source code attached

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • 当然.. 我会提供一些信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多