首页 > 解决方案 > 有什么方法可以检测用户关闭 WIFI 或数据的确切时间?

问题描述

  1. 我搜索了一下,结果发现Broadcast Receiver不推荐用于 N 以上的目标。

  2. 我发现了GCMNetworkManager。而且还会贬值。

  3. 我也查了JobScheduler。但是,它的行为不是我想要实现的。

我可以在这三种方法中实现的唯一方法是定期检查互联网状态。

然而,我不想要它。我想要的是在用户关闭或打开它们时检测事件。然后,我想显示一个对话框以确保用户再次打开它。

我制作 iOS 的大学说,他使用Observer他的 iOS 应用程序。并说也许Android是一样的。

有没有办法让它成为可能?

标签: androidbroadcastreceiverandroid-wifiandroid-jobschedulergcm-network-manager

解决方案


你可以考虑 Manifest 中的那些。

        <receiver android:name="receiver.NetworkChangeReceiver">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
                <action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
            </intent-filter>
        </receiver>

但是,这些已被弃用。

相反,您可以以编程方式声明它。

  1. 创建一个接收器类。
class NetworkChangeReceiver : BroadcastReceiver() {
    var dialog: Dialog? = null

    override fun onReceive(context: Context, intent: Intent) {
        val isConnected = NetworkUtil.getConnectivityStatusString(context)

        Toast.makeText(context, "Intere State Changed: $isConnected", Toast.LENGTH_SHORT).show()
    }
}
  1. 在你的Activity.
// Internet Check Receiver
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
this.registerReceiver(NetworkChangeReceiver(), intentFilter)

推荐阅读