2012-08-17 30 views
8

我想根據SIM硬件是否存在,在我的應用程序中禁用與CALL和SMS相關的功能。現在一個初學者的方法將通過以下方式檢查手機類型:如何確定特定設備是否具有SIM硬件支持?

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

如果爲true,則支持。

一切都很好,直到我碰到索尼Tablet S的只有數據和消息SIM卡支持來到。沒有語音支持。所以對於這個設備,我需要禁用只有呼叫功能,但繼續支持短信。 索尼平板電腦返回TelephonyManager.PHONE_TYPE_NONE,因此我無法使用上述方法。 此外,

telephonyManager1.getSimState(); 

返回1即SIM_STATE_ABSENT這也是其具有用於SIM硬件本身不支持HTC FLYER的情況下相同。

那麼,有沒有辦法在其中可以來我知道,如果SIM硬件是有(不論插入SIM卡或沒有)?

+0

所以你的最終目標是要知道是否支持通話?爲什麼你在乎SIM卡 – nandeesh 2012-08-17 08:03:22

+0

通過WiFi不支持VOIP電話? – MSalters 2012-08-17 08:22:11

+0

@nandeesh - 我的目標是要知道是否分別支持通話和短信。爲了非常準確,我想知道是否有SIM卡插槽可用。 – binaryKarmic 2012-08-17 09:21:09

回答

0

使用

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

編輯:

嘗試使用

TelephonyManager.getLine1Number() 

如果返回null,則你不會有電話功能。沒試過。給它一個機會

+1

在HTC傳單和索尼Tablet S的-i檢查......都返回false :(我很驚訝居然文檔說, 「功能的getSystemAvailableFeatures()和hasSystemFeature(字符串)。該裝置有數據電話收音機通信支持「。 這款索尼平板電腦支持短信雖然。 – binaryKarmic 2012-08-17 10:01:51

+0

即使它返回null這就是犯規幫助我在這裏..cause即時得到CALL是否支持或不TelephonyManager.PHONE_TYPE_NONE的幫助....什麼我需要檢查是否支持SMS – binaryKarmic 2012-08-17 10:29:26

相關問題