getNetworkOperator和getActiveNetwork是否足以检查Android设备是否具有电话网络连接?

时间:2018-08-26 23:30:39

标签: android telephony

我正在使用此代码检查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:需要特别注意的是,我只想保持足够的连通性,以便用户与网络时间保持同步(我想这几乎不需要...,但绝对不需要)。

0 个答案:

没有答案