【发布时间】:2017-01-17 15:46:13
【问题描述】:
背景
可以使用此代码和PhoneNumberUtil library by Google(可用here)检查给定字符串是否代表有效电话号码:
public static boolean isValidNumber(final PhoneNumber phone) {
if (phone == null)
return false;
final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
return phoneNumberUtil.isValidNumber(phone);
}
public static boolean isValidPhoneNumber(String phone) {
if (TextUtils.isEmpty(phone))
return false;
phone = phone.replaceAll("[^0-9]", "");
final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance();
PhoneNumber phoneNumber = null;
try {
phoneNumber = phoneNumberUtil.parse(phone, Locale.getDefault().getCountry());
} catch (final Exception e) {
}
return isValidNumber(phoneNumber);
}
问题
这只是一般检查,但我无法确定是否有可能知道电话号码是否真的是移动设备的。
我尝试过的
正如我在一些网站上看到的,上面的检查可能需要稍作调整才能知道它是否是移动设备,但根据我的测试,这是错误的:
...
phone = phone.replaceAll("[^0-9]", "");
if (phone.length() < 7)
return false;
...
问题
是否可以知道电话号码是否是移动设备的?
如果是这样,怎么办?
【问题讨论】:
-
引用库的 README 文件:
"getNumberType" - gets the type of the number based on the number itself; able to distinguish Fixed-line, Mobile, Toll-free, Premium Rate, Shared Cost, VoIP and Personal Numbers (whenever feasible). -
你要求验证吗?
-
@W4R10CK 我在问我是否可以检查给定的号码是手机号码还是其他号码。
-
@PrerakSola 我怎么错过了...谢谢。我应该在使用它之前调用 isValidNumber 吗?你能把它写在答案中吗?
-
是的,我想您应该在检测号码类型之前致电
isValidNumber。这不是一个实际的答案。你只是错过了阅读图书馆的一部分...... :)
标签: android phone-number libphonenumber