2012-08-17 33 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

相关问题