Есть ли способы определить точное время, когда пользователь выключает Wi-Fi или данные? - PullRequest
1 голос
/ 21 июня 2019
  1. Я искал, и оказалось, что Broadcast Receiver не рекомендуется для цели выше N.

  2. Я обнаружил GCMNetworkManager.И это также амортизируется.

  3. Я также проверил JobScheduler.Однако его поведение не является тем, что я хочу реализовать.

Единственный способ, который я могу реализовать среди этих трех, - это периодически проверять состояние Интернета.

Однако я нене хочу этогоТо, что я хочу, это обнаружение события, когда пользователь выключает их или включает.А затем я хотел бы показать диалоговое окно, чтобы убедиться, что пользователь снова включит его.

Мой колледж, который выпускает iOS, говорит, что он использует Observer для своего приложения для iOS.И сказал, может быть, Android то же самое.

Есть ли способ сделать это возможным?

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете рассмотреть их в Манифесте.

        <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()
    }
}
В вашем Activity.
// Internet Check Receiver
val intentFilter = IntentFilter("android.net.conn.CONNECTIVITY_CHANGE")
this.registerReceiver(NetworkChangeReceiver(), intentFilter)
...