首页 > 解决方案 > 如何区分呼叫是移动呼叫还是IP呼叫?

问题描述

我正在开发电话应用程序,我需要检查呼叫是移动电话还是 IP。无论是对传入呼叫还是对活动呼叫进行此检查都没有关系。我正在使用 WhatsApp 和 Skype 测试 IP 呼叫。

我看到另一个答案说要使用这种方法:

public boolean isVoip(Context context){
    AudioManager manager = (AudioManager)context.getSystemService(Context.AUDIO_SERVICE);
    return manager.getMode() == AudioManager.MODE_IN_COMMUNICATION;
}

但是,manager.getMode() == AudioManager.MODE_IN_CALL无论是移动电话还是IP电话。

我还查看了 TelephonyManager 文档并找到了 getPhoneType() 方法。

mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);

但即使在拨打/接听 IP 电话时也会mTelephonyManager.getPhoneType()返回TelephonyManager.PHONE_TYPE_GSM而不是返回TelephonyManager.PHONE_TYPE_SIP,所以我认为getPhoneType()返回当前设备的电话类型。

标签: javaandroidtelephonyandroid-audiomanager

解决方案


推荐阅读