有什么方法可以检测用户关闭WIFI或数据的确切时间?

时间:2019-06-21 08:45:32

标签: android broadcastreceiver android-wifi android-jobscheduler gcm-network-manager

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

  2. 我发现了GCMNetworkManager。而且它也贬值了。

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

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

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

我制作iOS的大学说,他在自己的iOS应用中使用Observer。并且说也许Android是一样的。

有什么办法使之成为可能?

1 个答案:

答案 0 :(得分:0)

您可以考虑清单中的那些。

        <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)