android – 如何确定特定设备是否支持SIM硬件?

手机数码 2019-01-12 阅读原文

我想根据SIM硬件是否存在禁用我的应用程序中与CALL和SMS相关的功能.现在初学者的方法是使用以下方法检查手机类型:

if (telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE)

如果为真则支持.

一切都很好,直到我遇到Sony Tablet S,它只支持数据和消息的SIM卡.没有语音支持.因此,对于此设备,我需要仅禁用CALL功能,但继续使用SMS支持.

索尼平板电脑返回TelephonyManager.PHONE_TYPE_NONE所以我不能使用上述方法.

还有,

telephonyManager1.getSimState();

返回1即SIM_STATE_ABSENT,在HTC FLYER的情况下也是如此,它不支持SIM硬件本身.

那么有什么方法可以让我知道SIM硬件是否存在(无论是否插入SIM卡)?

使用

PackageManager pm = this.getPackageManager();
boolean hasTelephony=pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);

编辑:

尝试使用

TelephonyManager.getLine1Number()

如果这返回null,那么你将没有电话功能.没试过.试一试

翻译自:https://stackoverflow.com/questions/12001863/how-to-find-out-whether-a-particular-device-has-sim-hardware-support

责编内容by:代码日志 【阅读原文】。感谢您的支持!