gpt4 book ai didi

android - ContactsContract 按电话号码选择记录

转载 作者:行者123 更新时间:2023-11-29 23:59:55 25 4
gpt4 key购买 nike

我可以使用下面的查询选择所有联系人

    cr = mActivity.getContentResolver();
String selection = ContactsContract.Contacts.HAS_PHONE_NUMBER + " > 0";
String orderBy = ContactsContract.Contacts.DISPLAY_NAME + " ASC ";
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, selection, null, orderBy);

但是,我有一个电话号码列表,我想创建这样的查询

String selection = ContactsContract.Contacts.PhoneNumber_or_something_else  in (MyPhoneNumberArray)

这有可能吗?

最坏的情况是,我可以在创建游标后使用 do while 删除相关项,但据我所知,我无法从游标中删除任何记录。

最佳答案

联系人数据库由三个主要表组成:

  1. Contacts - 每个条目代表一个联系人,并将一个或多个 RawContacts
  2. 组合在一起
  3. RawContacts - 每个条目代表一个联系人的数据,该联系人由一些 SyncAdapter(例如 Whatsapp、Google、Facebook、Viber)同步,这将多个数据条目分组
  4. Data - 有关联系人、电子邮件、电话等的实际数据。每一行都是属于单个 RawContact
  5. 的单个数据

联系人数据库中的所有电话号码都在 Data 表中,因此这就是您需要查询的内容,您可以从该查询中获取 CONTACT_ID 的列表,然后如果需要,可以使用它来获取有关联系人的一般信息。

String[] phonesList = new String[] { "+121212345" }; // will work better if all phones in this list are in e164 format

String[] projection = { Phone.CONTACT_ID, Phone.DISPLAY_NAME, Phone.NUMBER, Phone.NORMALIZED_NUMBER };
String selection = Phone.NUMBER + " IN ('" + TextUtils.join("','", phonesList) + "') OR " +
Phone.NORMALIZED_NUMBER + " IN ('" + TextUtils.join("','", phonesList) + "')";
Cursor cur = cr.query(Phone.CONTENT_URI, projection, selection, null, null);

while (cur != null && cur.moveToNext()) {
long id = cur.getLong(0);
String name = cur.getString(1);
String phone = cur.getString(2);
Log.d(TAG, "got " + id + ", " + name + ", " + phone;
}

关于android - ContactsContract 按电话号码选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50077278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com