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

bin*_*mic 8 android telephony tablet

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

if (telephonyManager1.getPhoneType() == TelephonyManager.PHONE_TYPE_NONE)
Run Code Online (Sandbox Code Playgroud)

如果为真则支持.

一切都很好,直到我遇到Sony Tablet S,它只支持数据和消息的SIM卡.没有声音支持.所以对于这个设备我只需要禁用CALL功能,但继续支持SMS.索尼平板电脑返回TelephonyManager.PHONE_TYPE_NONE所以我不能使用上述方法.还有,

telephonyManager1.getSimState();
Run Code Online (Sandbox Code Playgroud)

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

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

nan*_*esh 0

使用

PackageManager pm = this.getPackageManager();
boolean hasTelephony=pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
Run Code Online (Sandbox Code Playgroud)

编辑:

尝试使用

TelephonyManager.getLine1Number()
Run Code Online (Sandbox Code Playgroud)

如果返回 null,那么您将没有电话功能。没试过。试一试