我正在构建一个用于阻止调用的 Android 应用程序。现在,当我向用户询问他/她想要阻止的联系人时,该号码可能包含也可能不包含该国家/地区的代码,而当我收到来自该人的电话时,它肯定会包含国家/地区代码。例如, 在印度,人们可以通过三种不同的方式存储号码: 1) 90331xxxxx 2) 090331xxxxx 3) +9190331xxxxx
现在,如果用户添加了一个以第一种方式存储的联系电话,那么我如何将它与传入号码进行比较,因为传入号码肯定会有国家代码。 此外,全局所有手机号码的长度都不同。那么,我应该如何比较这些数字。
最佳答案
你应该使用 https://code.google.com/p/libphonenumber/ .这有很多您需要的功能。
https://code.google.com/p/libphonenumber/#Quick_Examples说明了如何使用此库解析数字并获取特定国家/地区的号码,因此基本上您只需要使用此库获取本地号码,然后将其用于比较。
String swissNumberStr = "044 668 18 00"
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
try {
PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");
} catch (NumberParseException e) {
System.err.println("NumberParseException was thrown: " + e.toString());
}
boolean isValid = phoneUtil.isValidNumber(swissNumberProto); // returns true
// Produces "+41 44 668 18 00"
System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.INTERNATIONAL));
// Produces "044 668 18 00"
System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.NATIONAL));
// Produces "+41446681800"
System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.E164));
关于android - 如何处理不同国家的手机号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24764139/