android – 如何確定特定裝置是否支援SIM硬體?

我想根據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