我的应用是自助服务终端模式应用(除非用户输入代码,否则他将无法访问任何 Android 应用)。因此,当标签启动时,服务中有一些设置要做。我正在使用下面的代码来检查网络连接(此代码在我的工作中被用作实用程序类的一部分)。如果有可用的网络,我需要执行一个命令,否则必须触发一个事件。
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
在 Android 7 中,此代码可以完美运行。启动时,由于有 SIM 并且网络连接可用,我可以执行命令。
但是在 Android 6 中,即使有网络可用,代码也总是返回 not connected/OFFLINE。这发生在设备启动时。但是,应用程序启动后连接返回 true。
在内部,connectivityManager.activeNetworkInfo 基于带有 IntentFilter ConnectivityManager.CONNECTIVITY_ACTION 的 BroadcastReceiver。从日志中,我可以看到在应用程序安装期间正在注册 CONNECTIVITY_ACTION,但这不会在设备启动时发生。
我试图对扩展 Application 的类进行网络连接检查,但这也不起作用 - 认为检查将使应用程序在启动时意识到存在网络连接。