我对电话号码格式有疑问。如果我尝试在Android设备上阅读通话记录,我会得到两种格式的数字。国际版和短版。我一直认为这种行为在某种程度上受到联系人存储在联系人中的格式的影响。但我不确定了。
手机是否可能无法从提供商那里获得完整格式?这样它就不能给我了?如果是这种情况,那么提供商没有提供完整格式的条件是否存在?例如,如果呼叫在同一个国家/地区内?
或者来自提供商,手机始终是完整的格式,而android则将其隐藏起来。
我需要获得的最终状态是国际格式的每个电话号码。但这对我来说是不可能的。我没有每个号码的国家信息。
答案 0 :(得分: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();
}