java - 如何区分呼叫是移动呼叫还是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()
返回当前设备的电话类型。
解决方案
推荐阅读
- perl - Perl oneliner 从 URL 中提取主机和端口
- python - How to add a new column and fill it up with a specific value depending on another column's series?
- python - Python 不使用 pyPDF2 打印 PDF
- python - Extracting the entities from Spacy and putting in new dataframe
- r - 是否可以从总体中生成 10 个样本并重复该抽样 1000 次?
- c++ - 从另一个 exe 或批处理文件调用时,系统 API 在 exe 中不起作用
- azure - 是否可以通过 Azure DevOps 通过 Linux 环境对 Azure Function 进行持续部署 CI/CD?
- spring - Spring security - OPTIONS 调用上的 403 状态响应
- python - 有没有一种快速的方法来获取具有匹配前缀的 aws 存储桶中的词法最大键
- ios - SwiftUI:自定义按钮无法识别具有清晰背景和 buttonStyle 的触摸