我使用TelepphonyManager和Context.TELEPHONY_SERVICE获取设备ID
TelephonyManager tManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String uid = tManager.getDeviceId();
我是否需要可用的3G / 4G / LTE数据连接才能获得TELEPHONY_SERVICE?或者如果没有信号,这会返回null吗?
编辑:
关闭设备系统设置中的移动数据设置是否完全关闭数据连接,就像根本没有数据连接一样?因为这样很容易测试。
答案 0 :(得分:0)
我无法在Android文档中找到有关您的问题的内容。见这里:http://developer.android.com/reference/android/content/Context.html#TELEPHONY_SERVICE
我认为最简单的方法是将它放在手机上关闭数据连接,启动你的应用程序并查看它是否会抛出NPE。希望它有所帮助
答案 1 :(得分:0)
您可以随时getSystemService(Context.TELEPHONY_SERVICE)
。
在没有无线电硬件的设备上,getDeviceId()
将返回NULL
。在具有蜂窝无线电的设备上,即使您禁用IMEI / MEID / ESN,也会获得IMEI / MEID / ESN(即飞行模式,无SIM卡等)。
在Android虚拟设备(AVD,a / k / a模拟器)中,getDeviceId()
返回IMEI 000000000000000
。
在Genymotion的免费版本中,getDeviceId()
返回000000000000000
的IMEI(但我注意到他们的Lollipop预览设备返回NULL
)。如果您有付费版本,则可以使用VM外观上的ID按钮设置任何IMEI。