0

我对电话号码格式有疑问。如果我尝试在 android 设备上阅读通话记录,我会得到两种格式的号码。国际版和短版。我一直认为这种行为在某种程度上受到联系人存储在联系人中的格式的影响。但我不确定了。

手机是否有可能没有从提供商那里获得完整的格式?那样它就不能给我吗?如果是这种情况,是否有一些规范在哪些条件下提供者不提供完整格式?例如,如果呼叫在同一个国家/地区内?

或者从提供商那里,手机始终具有完整的格式,而 android 对我隐藏了它。

我需要获得的最终状态是国际格式的每个电话号码。但这对我来说是不可能的。我没有每个号码的国家信息。

4

1 回答 1

0

是的,我认为,这取决于提供者。有的传送国际号码,有的传送国内号码。

在后一种情况下,您只能进行一些最佳猜测。我对非国际号码采取了以下方法:使用当前网络提供商的国家代码。如果不可用,请使用 SIM 卡的国家/地区代码。如果这不可用,请使用当前语言环境的国家代码。

或者在android代码中:

TelephonyManager tm = (TelephonyManager) getActivity()
        .getSystemService(Context.TELEPHONY_SERVICE);
String countryISOCode = tm.getNetworkCountryIso().toUpperCase(Locale.US);
if (countryISOCode.isEmpty()) { // when not connected fall back to the SIM's country
    countryISOCode = tm.getSimCountryIso().toUpperCase(Locale.US);
}
if (countryISOCode.isEmpty()) { // when even no SIM, get the countrycode from the locale
    countryISOCode = Locale.getDefault().getCountry();
}
于 2016-08-11T07:38:54.073 回答