首页 > 解决方案 > 连接wifi或移动数据时如何检查设备是否处于连接状态?

问题描述

我正在开发在应用程序启动时运行我的网络服务的 android 应用程序。我的应用程序基本上是设备的家庭应用程序。这意味着当用户重新启动设备时,我的应用程序将出现在他面前。

到目前为止,这很棒。但我注意到,在应用程序启动时,设备需要 5 到 10 秒才能连接互联网。而我的网络服务在互联网建立之前运行,因此抛出“发生错误,请稍后再试”的错误。

我想要什么:虽然我正在显示该消息,但我真的不满意,因为我确实想向用户显示一条消息。该消息应该是“设备正在连接到互联网”

但不幸的是,我无法这样做。我正在使用以下代码

    public static boolean isNetworkAvailable(Context context) {
    ConnectivityManager connectivityManager
            = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}

但它确实告诉我网络是否连接。

那么是否存在我可以显示诸如“请等待设备正在连接到互联网”之类的消息的情况

或者我怎样才能让该设备重新启动而不是唯一的应用程序。... 请帮忙

标签: androidandroid-connectivitymanager

解决方案


在您的活动中注册本地(或清单声明,如果您愿意)广播接收器(此处的文档https://developer.android.com/guide/components/broadcasts),使用此意图过滤器监听连接更改IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION):然后检查设备是否与您发布的代码有互联网连接。请记住在 onResume() 方法中注册广播接收器并在 onPause() 方法中取消注册

  • 从 api 24 及更高版本:

你可以使用 registerDefaultNetworkCallback https://developer.android.com/reference/android/net/ConnectivityManager.html#registerDefaultNetworkCallback(android.net.ConnectivityManager.NetworkCallback)

回调有一个名为“onAvailable”的公共方法https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html#onAvailable(android.net.Network)当新网络准备好时调用使用。


推荐阅读