我想检查正在拨打的电话是否是国际电话。我有使用 TelephonyManager.getLine1Number() 获得的 SIM 号码以及使用 TelephonyManager.getSimCountryIso() 获得的 SIM 卡的国家代码 ISO。
无论如何我可以找到正在拨打电话的号码的国家代码吗?
我想检查正在拨打的电话是否是国际电话。我有使用 TelephonyManager.getLine1Number() 获得的 SIM 号码以及使用 TelephonyManager.getSimCountryIso() 获得的 SIM 卡的国家代码 ISO。
无论如何我可以找到正在拨打电话的号码的国家代码吗?
我认为telephonyManager.getSimCountryIso()
这不会帮助您确定“正在拨打哪个国家/地区”,因为它将返回您所在国家/地区的 ISO。
此外,ISD 代码的长度因国家/地区而异。对于某些国家/地区,它是 1,对于某些国家,它是 2,对于某些国家,它是 3,而对于其他国家,它是 4。因此,您需要从传出号码中提取/制作 4 个不同长度的密钥,如下所示:
假设去电号码是+91-XXX-XXX-XXXX。然后您将创建 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;
}