android - 如何处理不同国家的手机号码?

标签 android call blocking

我正在构建一个用于阻止调用的 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/

相关文章:

java - 检测用户是否在 Android 中对应用进行评分

javascript - 使循环不挂起浏览器

spring-boot - `servletRequest cannot be null` -> SpringBoot - WebClient - 使用 Keycloak 获取请求

android - 如何获取 Map 值并为每个值创建 String 类型

c# - 使用 WCF、JSON 和非 Windows 客户端的换行符

java - 在 entity.getContent() 中解码从互联网收到的 base64 图像

c - 对于函数样式或类型构造,应为 '('

javascript - 调用 javascript 函数太多次

r - 我的 CGI 可以调用 R 吗?

javascript - native Javascript 页面加载消息?