是否有任何将TELEPHONY_SERVICE设置为空的机会?TELEPHONY_SERVICE返回null的机会
TelephonyManager teleman = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
我的意思是说在上面的行中有teleman为null的机会吗?
在此先感谢您的回复。
是否有任何将TELEPHONY_SERVICE设置为空的机会?TELEPHONY_SERVICE返回null的机会
TelephonyManager teleman = (TelephonyManager) getBaseContext()
.getSystemService(Context.TELEPHONY_SERVICE);
我的意思是说在上面的行中有teleman为null的机会吗?
在此先感谢您的回复。
是的,可以。作为getSystemService()的手册说:
返回
的服务,或者如果名称不存在空。
对于一些基本的服务,这是不太可能的,但电话不是其中之一。不要期待它,例如GoogleTV或某种平板电脑。您可以通过使用hasSystemFeature()
但是我已经看到三星手机(CDMA/LTE,在这种情况下)hasSystemFeature的结果根据SIM状态而变化的设备。因此,您可以使用具有电话功能的设备,并希望访问TelephonyManager,例如找出sim状态是什么,但hasSystemFeature误导了你。所以,最好只尝试获取TM并查看它返回的结果。 – Tom
我在一个像素以及@Tom上看到过这种情况,所以我怀疑这不仅限于三星。 –
是的,你可以用这个检查:
getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
来检查某些功能是否可用。使用TelephonyManager对象时,请不要忘记在AndroidManifest中插入适当的权限。不同的方法可能需要不同的权限 – kaneda