我正在使用此代码检查Android设备是否具有电话网络连接。
final TelephonyManager tel = (TelephonyManager) acontext.getSystemService(Context.TELEPHONY_SERVICE);
if (Build.VERSION.SDK_INT<=24)
{
return (tel.getNetworkOperator() != null && !tel.getNetworkOperator().equals(""));
}
else
{
ConnectivityManager cm = (ConnectivityManager) acontext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
return !(info==null || !info.isConnected());
}
我以为代码可以正常工作,但是也许我在测试错误并认为某些事情是错误的。
1)我认为getNetworkOperator()和getActiveNetworkInfo()都向电话网络进行了实时查询以获取其信息,因此,如果他们无法返回任何信息,那是因为没有网络连接。关于此的文档给了我这种印象,尽管确实没有明确说明。
2)因此,我只检查了设置飞机模式,按预期返回了这些功能的空值。
3)但是,现在我已经检查了模拟器“无”中的设置是否为信号强度,令人惊讶地返回了连接性,我认为这不应该发生,但是,即使信号不存在,也许仍然存在网络连接性,虽然我觉得很奇怪。还是正在读取设备内存中的缓存值?
此代码足以检查是否存在网络连接吗?
PD:需要特别注意的是,我只想保持足够的连通性,以便用户与网络时间保持同步(我想这几乎不需要...,但绝对不需要)。