0

我想检查正在拨打的电话是否是国际电话。我有使用 TelephonyManager.getLine1Number() 获得的 SIM 号码以及使用 TelephonyManager.getSimCountryIso() 获得的 SIM 卡的国家代码 ISO。

无论如何我可以找到正在拨打电话的号码的国家代码吗?

4

1 回答 1

0

我认为telephonyManager.getSimCountryIso()这不会帮助您确定“正在拨打哪个国家/地区”,因为它将返回您所在国家/地区的 ISO。

此外,ISD 代码的长度因国家/地区而异。对于某些国家/地区,它是 1,对于某些国家,它是 2,对于某些国家,它是 3,而对于其他国家,它是 4。因此,您需要从传出号码中提取/制作 4 个不同长度的密钥,如下所示:

假设去电号码是+91-XXX-XXX-XXXX。然后您将创建 4 个密钥:

  1. 9 (1 位数字键)
  2. 91 (2 位数字键)
  3. 91X (3 位密钥)
  4. 91XX(4 位密钥)

现在检查此列表中是否存在这 4 个键中的任何一个:ISO List

[编辑:替代解决方案]

同样,如果您只需要确定所拨打的电话是否是国际电话,那么您只需检查以下情况:

if(outgoing-number `startswith` "00" || outgoing-number does not `startswith` your "country's-ISD-code") {
    //it's an international call;
} else {
    //it's a domestic call;
}
于 2012-10-30T04:45:02.580 回答