@Test @Config(minSdk = LOLLIPOP) public void addDefaultNetworkActiveListener_shouldAddListener() throws Exception { ConnectivityManager.OnNetworkActiveListener listener1 = spy(createSimpleOnNetworkActiveListener()); ConnectivityManager.OnNetworkActiveListener listener2 = spy(createSimpleOnNetworkActiveListener()); connectivityManager.addDefaultNetworkActiveListener(listener1); connectivityManager.addDefaultNetworkActiveListener(listener2); shadowOf(connectivityManager).setDefaultNetworkActive(true); verify(listener1).onNetworkActive(); verify(listener2).onNetworkActive(); }
@Test @Config(minSdk = LOLLIPOP) public void removeDefaultNetworkActiveListener_shouldRemoveListeners() throws Exception { // Add two different callbacks. ConnectivityManager.OnNetworkActiveListener listener1 = spy(createSimpleOnNetworkActiveListener()); ConnectivityManager.OnNetworkActiveListener listener2 = spy(createSimpleOnNetworkActiveListener()); connectivityManager.addDefaultNetworkActiveListener(listener1); connectivityManager.addDefaultNetworkActiveListener(listener2); shadowOf(connectivityManager).setDefaultNetworkActive(true); verify(listener1).onNetworkActive(); verify(listener2).onNetworkActive(); // Remove one at the time. connectivityManager.removeDefaultNetworkActiveListener(listener2); shadowOf(connectivityManager).setDefaultNetworkActive(true); verify(listener1, times(2)).onNetworkActive(); verify(listener2).onNetworkActive(); connectivityManager.removeDefaultNetworkActiveListener(listener1); shadowOf(connectivityManager).setDefaultNetworkActive(true); verify(listener1, times(2)).onNetworkActive(); verify(listener2).onNetworkActive(); }
@SuppressLint("NewApi") @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) private void init() { if (DEBUG) Log.v(TAG, "init:"); final ConnectivityManager manager = requireConnectivityManager(); if (BuildCheck.isLollipop()) { mOnNetworkActiveListener = new MyOnNetworkActiveListener(); manager.addDefaultNetworkActiveListener(mOnNetworkActiveListener); // API>=21 mNetworkCallback = new MyNetworkCallback(); // ACCESS_NETWORK_STATEパーミッションが必要 if (BuildCheck.isNougat()) { manager.registerDefaultNetworkCallback(mNetworkCallback); // API>=24 } else if (BuildCheck.isOreo()) { manager.registerDefaultNetworkCallback(mNetworkCallback, mAsyncHandler); // API>=26 } else { manager.registerNetworkCallback(new NetworkRequest.Builder() .build(), mNetworkCallback); // API>=21 } } else { mNetworkChangedReceiver = new NetworkChangedReceiver(this); final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ACTION_GLOBAL_CONNECTIVITY_CHANGE); requireContext().registerReceiver(mNetworkChangedReceiver, intentFilter); } }