检查是否正在进行呼叫是国际呼叫

时间:2012-10-30 04:40:12

标签: android telephonymanager phone-call

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

无论如何,我能找到拨打电话号码的国家代码吗?

1 个答案:

答案 0 :(得分: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位数字键)
  5. 现在检查此列表中是否存在以下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;
    }