gpt4 book ai didi

android - 我如何在 Android 中快速比较电话号码?

转载 作者:行者123 更新时间:2023-11-30 03:52:33 25 4
gpt4 key购买 nike

在我正在开发的 Android 应用程序中,我有一个映射的数据库:

<Contact ID, Contact Lookup Key> --> <My Custom Data Associated with Contact>

收到 SMS 消息时,我希望能够查找与发送 SMS 消息的联系人关联的与联系人关联的自定义数据。我想以尽可能少的步骤进行查找。

我可以从短信中获取的唯一数据是电话号码,所以问题基本上是将电话号码映射到我的自定义在尽可能少的步骤中与联系人相关联的数据

现在,我知道我可以使用 ContactsContract.PhoneLookup 从电话号码中查找联系人如所述,例如here .但是,这并没有让我得到我想要的结果,因为联系人 ID 和联系人查找 key 都可能发生变化。因此,如果我保存到数据库中的任何联系人的 ID 或查找键发生了变化,我基本上必须加载我的整个数据库并刷新每一行的 ID/查找键,然后才能测试它们是否代表相同的联系人ContactsContract.PhoneLookup 返回的那个。这是一个非常残酷的解决方案,我宁愿避免。

我想做的是保留一个将电话号码映射到我的自定义数据的表(在 N:1 关系中)。

<Phone Number> --> <My Custom Data Associated with Contact>

这样一来,至少在理论上,我可以为电话号码列编制索引,只需一步即可查找数据。但是,电话号码有多种格式。我的解决方案只有在我可以创建给定电话号码的规范表示时才有效。我的计划是使用 PhoneNumberUtils.getStrippedReversed生成一个可有效索引的规范电话号码,但这在一个微不足道的案例中失败了,例如:

PhoneNumberUtils.getStrippedReversed("+1(306)6656320") --> 02365566031 PhoneNumberUtils.getStrippedReversed("(306)6656320") --> 0236556603

他们不是同一个数字!

所以通过长篇大论的解释,我的问题是:谁能想出一种将电话号码转换为规范电话号码的方法,以便我可以对该号码执行索引数据库查找,或者我上面描述的问题的任何其他解决方案?

最佳答案

您可以将以下方法与 getStrippedReversed 一起使用

public static String toCallerIDMinMatch (String phoneNumber)

*相反顺序返回网络部分中最右边的 MIN_MATCH (5) 个字符 这可用于对存储 getStrippedReversed() 的列进行数据库查找 如果 phoneNumber 则返回 null == null*

然后你的比较会给你想要的结果

关于android - 我如何在 Android 中快速比较电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924223/

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