0

我正在编写一个读取手机中所有联系人的应用程序,如果号码与特定的正则表达式匹配,我的应用程序将编辑成一个新的更合适的。

我编写的代码在我的手机上与我的联系人(galaxy s2 并且我在我的联系人中放置了许多测试号码)完美运行,但在 Galaxy s3 上引发 Pattern 异常(使用不同的联系人列表,但正如我所说,我放入了我的 sim许多测试联系人,我想我涵盖了所有可能的测试用例)

否则,如果解析顺利,在 Galaxy s3 上,一旦应用程序读取带有照片的联系人,它就会结束更新号码,但程序会继续工作,直到读取所有联系人(在查询中我只要求显示号码、号码和 id ,没有照片,没有电子邮件等)

有什么提示吗?

这是解析所涉及的代码:

public NumberParser(String idSim)
{

    AssociationManaging am = new AssociationManaging();
    prefix = am.getAssociatedPrefix(idSim).trim();
    internazionalePrivataConPrefissoRegEx = prefix+"0039[0-9]+";
    nazionalePrivataRegEx = prefix+"[0-9]+";
    internazionaleAziendale1RegEx = "\\+39[0-9]+";
    internazionaleAziendale2RegEx = "0039[0-9]+";
    internazionalePrivataPausaRegEx = prefix+"0039[0-9]+,[0-9]";
    nazionalePrivataPausaRegEx = prefix+"[0-9]+,[0-9]";
    nazionaleAziendaleRegEx = "[0-9]+";
}

/* examples of possible numbers
    String nazionaleAziendale ="333123123";
    String internazionaleAziendale1 = "+39333123123";
    String internazionaleAziendale2 = "0039333123123";

    String nazionalePrivata = prefix+"333123123";
    String nazionalePrivataPausa = prefix + "333123123,3";
    String internazionalePrivataConPrefisso = prefix+"0039333123123";
    String internazionalePrivataConPausa = prefix + "0039333123123,3";
*/

public String getPrefixMatch(String number)
{

    String type = "unknown";
    if(check(internazionalePrivataConPrefissoRegEx, number))
        return prefix+"0039";
    else if(check(nazionalePrivataRegEx, number))
        return prefix;
    else if(check(internazionaleAziendale1RegEx, number))
        return "+39";
    else if(check(internazionaleAziendale2RegEx, number))
        return "0039";
    else if(check(internazionalePrivataPausaRegEx, number))
        return prefix + "0039_" + number.substring(number.length() -1, number.length());
    else if(check(nazionalePrivataPausaRegEx, number))
        return prefix + "_" +number.substring(number.length() -1, number.length());
    else if(check(nazionaleAziendaleRegEx, number))
        return "";

    return type;

}

public static boolean check(String regex, String input){
      if (Pattern.matches(regex, input))
        return true;
      else
        return false;
    }

编辑:我将我的 .apk 发送给一位朋友,他尝试过(旧 lg):也不例外,但代码不会更新联系人......我无法理解为什么在我的手机上一切正常而在其他设备上却不行!

4

0 回答 0