【问题标题】:How to check if a device is under Connecting state when connecting to wifi or mobile data?连接wifi或移动数据时如何检查设备是否处于连接状态?
【发布时间】:2018-10-25 11:08:01
【问题描述】:

我正在开发在应用启动时运行我的网络服务的 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();
}

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

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

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

【问题讨论】:

  • 请查看this question的答案
  • 我不需要关机之类的事情
  • 在您的问题中,您问“或者我如何才能重新启动该设备”,并且在我发送给您的链接中,答案涵盖了关机,但也提到了重启作为相同的概念。 “另一种选择是使用手机重启时发送的 [ACTION_BOOT_COMPLETED] (developer.android.com/reference/android/content/…) Intent。”

标签: android android-connectivitymanager


【解决方案1】:

在您的活动中注册一个本地(或 Manifest 声明的)广播接收器(此处为文档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) 的公共方法,在准备好使用新网络时调用该方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多