TELEPHONY_SERVICE的机会返回null

the*_*hej 2 android telephonymanager

有没有机会将TELEPHONY_SERVICE作为null?

     TelephonyManager teleman = (TelephonyManager) getBaseContext()
            .getSystemService(Context.TELEPHONY_SERVICE);
Run Code Online (Sandbox Code Playgroud)

我的意思是在上面的行中有没有机会让teleman成为null?

在此先感谢您的回复.

ePe*_*ace 5

是的,您可以查看:

 getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY)
Run Code Online (Sandbox Code Playgroud)


Mar*_*ski 5

是的,它可以.正如getSystemService()的手册所说:

返回

服务;如果名称不存在,则返回null.

对于某些基本服务来说,这是不太可能的,但电话不是其中之一.不要指望它是谷歌电视或某种平板电脑.您可以使用hasSystemFeature()检查某些功能是否可用

  • 但我见过三星蜂窝(在这种情况下是CDMA/LTE)设备,其中hasSystemFeature的结果根据SIM状态而改变.因此,你可以拥有一个带有电话的设备并想要访问TelephonyManager,例如找出sim状态是什么,但让hasSystemFeature误导你.所以,最好只是尝试获取TM并查看它返回的内容. (2认同)