如何仅通过部分号码搜索联系人

时间:2013-03-01 03:06:52

标签: android phone-number

我正在开发一个Android应用程序,一个问题让我很困惑,我想实现一个像搜索联系的功能只是部分号码,如联系人A有一个号码为1234567,我希望用户只是然后输入123或345等相关联系人将被列出;但是当我研究android的数据库结构时,似乎很难实现,唯一的相关数据只是表数据中的DATA1和DATA4,DATA1正好是什么用户在添加联系人时输入;但是它将具有某种格式,例如123-456(123)456或123 456等.DATA4是标准化数字,但有时它将具有国家代码部分,例如+1等。有时它是正序,有时它是相反的顺序,如+1123456或6543211 +,所以我觉得很难实现它,有人可以帮助我!提前感谢!

1 个答案:

答案 0 :(得分:2)

第一种方法 -

将用户输入值(例如345)传递给函数

public String getPreparedInput(String input) {

    if(input==null || input.trim().length()==0) return "";

    StringBuilder sb = new StringBuilder("%");
    char[] chars = input.trim().toCharArray();
    for(char ch : chars) {
        sb.append(ch);
        sb.append("%");
    }
    return sb.toString();
}

接下来,在内容解析器的where子句中使用函数的输出(即%3%4%5%)

String where = "phone_number like '" + getPreparedInput(input) + "'";

第二种方法 -

在where子句

中使用SQLite replace()函数

String where = "replace(replace(replace(replace(replace(phone_number,'+',''),'-',''),'(',''),')',''),' ','') like '%" + input + " %'";