在不同设备上解析正则表达式会引发异常

时间:2013-07-23 17:51:13

标签: android parsing contacts

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

我写了我的电话上跟我交往完美运行(银河S2和我把很多测试号在我的联系人),但抛出模式异常的一个星系S3(用不同的联系人列表中的一个,但正如我所说的,我把代码在我的sim中有很多测试联系人,我想我已经涵盖了所有可能的测试用例)

否则,如果解析顺利进行,一旦应用程序读取与照片的联系人,就会在galaxy s3上结束更新号码,但程序会继续工作,直到所有联系人都被重新加入(在查询中我只询问显示号码,号码和身份证,没有照片,没有电子邮件等)

任何提示?

这是解析所涉及的代码:

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):没有例外,但是代码没有更新联系人...我不能不知道为什么在我的手机上一切正常,在其他设备上不 !

0 个答案:

没有答案