当前位置: 首页 > 知识库问答 >
问题:

如何从通话记录中获得国际格式的号码

蒙峰
2023-03-14

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

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

或者从提供商那里,手机一直都是全格式的,Android对我隐瞒了。

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

共有1个答案

胡意致
2023-03-14

是的,我认为,这取决于供应商。有些传送国际号码,有些传送国家号码。

在后一种情况下,你只能做出最好的猜测。我对非国际号码采取了以下方法:使用当前网络提供商的国家代码。如果不可用,请使用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();
}
 类似资料:
  • 在Github上libphonenumber提供的文档中,有一个演示,它将提供的任何数字转换为国际格式,例如转换为 我想在C#中使用相同的功能。 在libphone的文档中,需要解析号码并提供国家/地区。但是,演示在不提供地区/国家信息的情况下工作。有人能告诉我是怎么做的吗?

  • 你好,我有一个电话号码,是:,我想把它转换成:。有一个图书馆http://code.google.com/p/libphonenumber/这可以很好地进行转换,但它需要一个电话号码和一个我无法提供的国家/地区代码,因为我正在读取手机以从DB转换。 基本上,我想要一个脚本或库,将E164作为参数,并将其转换为国际标准格式,如下所示: 欢迎提出任何意见,提前谢谢。

  • 在我的iOS应用程序中,我必须转换一个电话号码(在联系人),并将其转换为国际格式(自动发送短信与extern库)。我看到了libPhoneNumber,但问题是我们必须输入国家代码,应用程序必须在所有(几乎)国家工作,所以我不知道用户的国家是什么。 以下是图书馆的工作原理:

  • 问题内容: 我正在尝试从通话记录中获取联系人。我可以使用以下代码从主要联​​系人获取联系电话: 它的作用是,当我们单击“联系人”按钮时,它将打开一个包含所有联系人的列表,用户可以选择任何联系人,并且所选联系人将添加到“收件人”字段中。我想做完全相同的事情,但是我不想显示所有联系人,而是只显示最近使用过的那些(呼叫记录)进行选择的联系人。 如果您还可以告诉如何与组一起执行此操作,那也很好。 问题答案

  • 我的要求是找出邮件收件人的号码是国际号码还是国家号码。 是否有任何Android API或任何第三方库可用于实现相同的。 我想使用libphonenumber谷歌API[android/externals/libphonenumber],但不知道如何检查国际号码和非国际号码。

  • 问题内容: 我使用SQL Developer连接到具有只读访问权限的数据库。这是TNS连接。我使用tnsnames.ora,转发端口脚本和SQL Developer。 过去,有时,在连接时,我会收到一条错误消息,从读取调用中得到一个减号。供应商代码0 如果我重新启动,它就会消失。另一个朋友建议改变对他有用的转发端口。 我最近升级到了一台新计算机,现在看来我一直在收到错误消息。重新启动或更改转发端口