blob: 3de60f06c67ecd43786f64987893a18783698231 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.connectivity;
import android.content.Context;
import android.net.ConnectivityManager;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.EventChannel;
import io.flutter.plugin.common.MethodChannel;
/** ConnectivityPlugin */
public class ConnectivityPlugin implements FlutterPlugin {
private MethodChannel methodChannel;
private EventChannel eventChannel;
/** Plugin registration. */
@SuppressWarnings("deprecation")
public static void registerWith(io.flutter.plugin.common.PluginRegistry.Registrar registrar) {
ConnectivityPlugin plugin = new ConnectivityPlugin();
plugin.setupChannels(registrar.messenger(), registrar.context());
}
@Override
public void onAttachedToEngine(FlutterPluginBinding binding) {
setupChannels(binding.getBinaryMessenger(), binding.getApplicationContext());
}
@Override
public void onDetachedFromEngine(FlutterPluginBinding binding) {
teardownChannels();
}
private void setupChannels(BinaryMessenger messenger, Context context) {
methodChannel = new MethodChannel(messenger, "plugins.flutter.io/connectivity");
eventChannel = new EventChannel(messenger, "plugins.flutter.io/connectivity_status");
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Connectivity connectivity = new Connectivity(connectivityManager);
ConnectivityMethodChannelHandler methodChannelHandler =
new ConnectivityMethodChannelHandler(connectivity);
ConnectivityBroadcastReceiver receiver =
new ConnectivityBroadcastReceiver(context, connectivity);
methodChannel.setMethodCallHandler(methodChannelHandler);
eventChannel.setStreamHandler(receiver);
}
private void teardownChannels() {
methodChannel.setMethodCallHandler(null);
eventChannel.setStreamHandler(null);
methodChannel = null;
eventChannel = null;
}
}