我正在编写一个读取手机中所有联系人的应用程序,如果号码与特定的正则表达式匹配,我的应用程序将编辑成一个新的更合适的。
我编写的代码在我的手机上与我的联系人(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):也不例外,但代码不会更新联系人......我无法理解为什么在我的手机上一切正常而在其他设备上却不行!