2012-10-24 47 views
2

是否有任何将TELEPHONY_SERVICE设置为空的机会?TELEPHONY_SERVICE返回null的机会

 TelephonyManager teleman = (TelephonyManager) getBaseContext() 
      .getSystemService(Context.TELEPHONY_SERVICE); 

我的意思是说在上面的行中有teleman为null的机会吗?

在此先感谢您的回复。

+1

来检查某些功能是否可用。使用TelephonyManager对象时,请不要忘记在AndroidManifest中插入适当的权限。不同的方法可能需要不同的权限 – kaneda

回答

5

是的,可以。作为getSystemService()的手册说:

返回

的服务,或者如果名称不存在空。

对于一些基本的服务,这是不太可能的,但电话不是其中之一。不要期待它,例如GoogleTV或某种平板电脑。您可以通过使用hasSystemFeature()

+2

但是我已经看到三星手机(CDMA/LTE,在这种情况下)hasSystemFeature的结果根据SIM状态而变化的设备。因此,您可以使用具有电话功能的设备,并希望访问TelephonyManager,例如找出sim状态是什么,但hasSystemFeature误导了你。所以,最好只尝试获取TM并查看它返回的结果。 – Tom

+0

我在一个像素以及@Tom上看到过这种情况,所以我怀疑这不仅限于三星。 –

5

是的,你可以用这个检查:

getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)