【发布时间】:2011-10-10 09:41:32
【问题描述】:
我认为我在这里面临一个悖论。
我正在尝试做的是当我接听/拨打电话时,我有号码,所以我需要知道它是否是国际号码,是否是本地号码等。
问题是:
- 为了让我知道一个数字是否是国际的,我需要解析它并检查它的长度,但是,长度因国家/地区而异,那么,我应该为每个国家/地区执行解析和识别的方法吗? (我认为不起作用);
- 为了让我知道它是否是本地号码,我需要区号,所以我必须做同样的事情,解析号码并检查长度,根据区号长度获取第一个数字;
很难找到解决方案。图书馆libphonenumber 提供了很多有用的课程,但我认为可以帮助我的课程却让我陷入了另一个悖论。
phoneUtil.parse(number, countryAcronym) 方法返回带有国家代码的号码,但它的作用是,如果我传递带有首字母缩写词“US”的号码,它现在返回带有国家代码“1”的号码如果我将首字母缩写词更改为“BR”,它会更改数字并返回“55”,即巴西的国家代码。所以,无论如何,我需要基于我得到的数字的国家首字母缩写词。
前:
numberReturned = phoneUtil.parse(phoneNumber, "US");
phoneUtil.format(numberReturned, PhoneNumberFormat.INTERNATIONAL);
上面的代码返回带有美国国家代码的数字,但现在如果我将“US”更改为任何其他国家/地区的首字母缩写词,它将返回相同的数字,但带有该国家/地区的国家代码。
我知道这个库不应该猜测数字来自哪个国家(那会很棒!),但这正是我所需要的。
这真的让我发疯了。我需要来自 SO 的聪明法师的好建议。
如果您能帮助我做出正确的决定,我将不胜感激。
谢谢。
PS:如果你已经使用 libphonenumber 并且有更多经验,请指导我使用哪个类,如果有能够解决这个问题的类。 =)
【问题讨论】:
标签: java android telephony phone-number