@Override public Observable<Connectivity> observeNetworkConnectivity(final Context context) { final String service = Context.CONNECTIVITY_SERVICE; final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(service); return Observable.create(new ObservableOnSubscribe<Connectivity>() { @Override public void subscribe(ObservableEmitter<Connectivity> subscriber) throws Exception { networkCallback = createNetworkCallback(subscriber, context); final NetworkRequest networkRequest = new NetworkRequest.Builder().build(); manager.registerNetworkCallback(networkRequest, networkCallback); } }).doOnDispose(new Action() { @Override public void run() { tryToUnregisterCallback(manager); } }).startWith(Connectivity.create(context)).distinctUntilChanged(); }
@Override public Observable<Connectivity> observeNetworkConnectivity(final Context context) { final String service = Context.CONNECTIVITY_SERVICE; final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(service); networkCallback = createNetworkCallback(context); registerIdleReceiver(context); final NetworkRequest request = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .build(); manager.registerNetworkCallback(request, networkCallback); return connectivitySubject.toFlowable(BackpressureStrategy.LATEST).doOnCancel(new Action() { @Override public void run() { tryToUnregisterCallback(manager); tryToUnregisterReceiver(context); } }).startWith(Connectivity.create(context)).distinctUntilChanged().toObservable(); }
@UiThreadTest @MediumTest @Feature({"Android-AppBase"}) public void testConnectivityManagerDelegateDoesNotCrash() { ConnectivityManagerDelegate delegate = new ConnectivityManagerDelegate(getInstrumentation().getTargetContext()); delegate.getNetworkState(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // getNetworkState(Network) doesn't crash upon invalid Network argument. Network invalidNetwork = netIdToNetwork(NetId.INVALID); NetworkState invalidNetworkState = delegate.getNetworkState(invalidNetwork); assertFalse(invalidNetworkState.isConnected()); assertEquals(-1, invalidNetworkState.getNetworkType()); assertEquals(-1, invalidNetworkState.getNetworkSubType()); Network[] networks = delegate.getAllNetworksUnfiltered(); if (networks.length >= 1) { delegate.getNetworkState(networks[0]); } delegate.getDefaultNetId(); NetworkCallback networkCallback = new NetworkCallback(); NetworkRequest networkRequest = new NetworkRequest.Builder().build(); delegate.registerNetworkCallback(networkRequest, networkCallback); delegate.unregisterNetworkCallback(networkCallback); } }
public static void registerLollipopNetworkReceiver(Context context) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); cm.registerNetworkCallback( new NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .build(), new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { boolean connected = false; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { connected = cm.bindProcessToNetwork(network); } else if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ //noinspection deprecation connected = ConnectivityManager.setProcessDefaultNetwork(network); } if(connected) { Customerly.get().__SOCKET__check(); } } }); } }
private void checkConnectivity() { final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); connected = activeNetworkInfo != null && activeNetworkInfo.isConnected(); if (!connected) { loading.setVisibility(View.GONE); if (noConnection == null) { final ViewStub stub = (ViewStub) findViewById(R.id.stub_no_connection); noConnection = (ImageView) stub.inflate(); } final AnimatedVectorDrawable avd = (AnimatedVectorDrawable) getDrawable(R.drawable.avd_no_connection); noConnection.setImageDrawable(avd); avd.start(); connectivityManager.registerNetworkCallback( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), connectivityCallback); monitoringConnectivity = true; } }
private void checkConnectivity() { final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); connected = activeNetworkInfo != null && activeNetworkInfo.isConnected(); if (!connected) { loading.setVisibility(View.GONE); if (noConnection == null) { final ViewStub stub = (ViewStub) findViewById(R.id.stub_no_connection); noConnection = (ImageView) stub.inflate(); } final AnimatedVectorDrawable avd = (AnimatedVectorDrawable) getDrawable(R.drawable.avd_no_connection); if (noConnection != null && avd != null) { noConnection.setImageDrawable(avd); avd.start(); } connectivityManager.registerNetworkCallback( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), connectivityCallback); monitoringConnectivity = true; } }
/** * Constructs a NetworkChangeNotifierAutoDetect. Should only be called on UI thread. * @param policy The RegistrationPolicy which determines when this class should watch * for network changes (e.g. see (@link RegistrationPolicyAlwaysRegister} and * {@link RegistrationPolicyApplicationStatus}). */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NetworkChangeNotifierAutoDetect( Observer observer, Context context, RegistrationPolicy policy) { // Since BroadcastReceiver is always called back on UI thread, ensure // running on UI thread so notification logic can be single-threaded. ThreadUtils.assertOnUiThread(); mObserver = observer; mContext = context.getApplicationContext(); mConnectivityManagerDelegate = new ConnectivityManagerDelegate(context); mWifiManagerDelegate = new WifiManagerDelegate(context); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mNetworkCallback = new MyNetworkCallback(); mNetworkRequest = new NetworkRequest.Builder() .addCapability(NET_CAPABILITY_INTERNET) // Need to hear about VPNs too. .removeCapability(NET_CAPABILITY_NOT_VPN) .build(); } else { mNetworkCallback = null; mNetworkRequest = null; } final NetworkState networkState = mConnectivityManagerDelegate.getNetworkState(); mConnectionType = getCurrentConnectionType(networkState); mWifiSSID = getCurrentWifiSSID(networkState); mMaxBandwidthMbps = getCurrentMaxBandwidthInMbps(networkState); mMaxBandwidthConnectionType = mConnectionType; mIntentFilter = new NetworkConnectivityIntentFilter(mWifiManagerDelegate.getHasWifiPermission()); mRegistrationPolicy = policy; mRegistrationPolicy.init(this); }
private static NetworkCapabilities getCapabilities(int transport) { // Create a NetworkRequest with corresponding capabilities NetworkRequest request = new NetworkRequest.Builder() .addCapability(NET_CAPABILITY_INTERNET) .addTransportType(transport) .build(); // Extract the NetworkCapabilities from the NetworkRequest. try { return (NetworkCapabilities) request.getClass() .getDeclaredField("networkCapabilities") .get(request); } catch (NoSuchFieldException | IllegalAccessException e) { return null; } }
/** Only callable on Lollipop and newer releases. */ @SuppressLint("NewApi") public void registerNetworkCallback(NetworkCallback networkCallback) { connectivityManager.registerNetworkCallback( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(), networkCallback); }
/** Only callable on Lollipop and newer releases. */ @SuppressLint("NewApi") public void requestMobileNetwork(NetworkCallback networkCallback) { NetworkRequest.Builder builder = new NetworkRequest.Builder(); builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); connectivityManager.requestNetwork(builder.build(), networkCallback); }
/** * Initializes the network. */ private void resetNetwork() { // Initialize network onNoNetwork(); mConnectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest networkRequest = new NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_LOWPAN) .build(); mBackgroundHandlerThread = new HandlerThread(TAG); mBackgroundHandlerThread.start(); mHandler = new Handler(mBackgroundHandlerThread.getLooper()); // Make sure that it is connected to a valid network mConnectivityManager.registerNetworkCallback(networkRequest, mNetworkCallback, mUiThreadHandler); }
private void registerNetworkCallback(ObservableEmitter<RxNetworkInfo> upstream) { networkCallback = new StrategyNetworkCallback(upstream); NetworkRequest request = networkRequest != null ? networkRequest : new NetworkRequest.Builder().build(); connectivityManager.registerNetworkCallback(request, networkCallback); }
@Implementation(minSdk = LOLLIPOP) @RequiresApi(LOLLIPOP) public void registerNetworkCallback(NetworkRequest request, NetworkCallback networkCallback) { networkCallbacks.add(networkCallback); // simulate available connection networkCallback.onAvailable(getActiveNetwork()); }
@Test() public void shouldRegisterWithDefaultNetworkRequest() { NetworkRequest defaultRequest = new NetworkRequest.Builder().build(); ConnectivityManager manager = setUpManagerWithNetworkRequest(null); sut.observe().subscribeWith(testObserver).assertSubscribed(); verify(manager).registerNetworkCallback(eq(defaultRequest), any(NetworkCallback.class)); }
@Test() public void shouldRegisterWithCustomNetworkRequest() { NetworkRequest customRequest = new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI).build(); ConnectivityManager manager = setUpManagerWithNetworkRequest(customRequest); sut.observe().subscribeWith(testObserver).assertSubscribed(); verify(manager).registerNetworkCallback(eq(customRequest), any(NetworkCallback.class)); }
@SuppressLint("NewApi") public RxNetworkModule(Context context) { InternetObservingStrategy customStrategy = HttpOkInternetObservingStrategy.builder().endpoint("http://captive.apple.com").delay(1000) .interval(5000).build(); RxNetwork custom = RxNetwork.builder().internetObservingStrategy(customStrategy) .defaultNetworkRequest(new NetworkRequest.Builder().build()).init(); bind(RxNetwork.class).toInstance(RxNetwork.init(context)); // default RxNetwork bind(RxNetwork.class).withName("custom").toInstance(custom); }
private void registerNetworkCallback(Context context) { final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE); manager.registerNetworkCallback( new NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET) .build(), new NetworkCallback() { @Override public void onAvailable(Network network) { mSambaClient.reset(); } }); }
@TargetApi(LOLLIPOP) void bindToNetwork(final String networkSSID, final NetworkStateChangeListener listener) { if (SDK_INT < LOLLIPOP) { logger.i("SDK version is below Lollipop. No need to bind process to network. Skipping..."); return; } logger.i("Currently active network is not " + networkSSID + ", would bind the app to use this when available"); NetworkRequest request = new NetworkRequest.Builder() .addTransportType(NetworkCapabilities.TRANSPORT_WIFI).build(); networkCallback = networkCallback(networkSSID, listener); manager.registerNetworkCallback(request, networkCallback); }
@Override protected void onResume() { super.onResume(); // Register network callbacks ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); networkCallback = new NetworkCallback(this); NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder(); networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); connectivityManager.registerNetworkCallback( networkRequestBuilder.build(), networkCallback); }
public static void register() { if(_impl == null) { _impl = new ConnectivityNetworkCallback(); ConnectivityManager cm = (ConnectivityManager)ClientProperties.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); cm.registerNetworkCallback(new NetworkRequest.Builder().build(), _impl); } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private void bringUpCellularNetwork() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) return; // Wait until the drone is connected. if(drone == null || !drone.isConnected()) return; Timber.i("Setting up cellular network request."); final ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkRequest networkReq = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build(); connMgr.requestNetwork(networkReq, new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { Timber.i("Setting up process default network: %s", network); boolean wasBound; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { wasBound = connMgr.bindProcessToNetwork(network); } else { wasBound = ConnectivityManager.setProcessDefaultNetwork(network); } DroidPlannerApp.setCellularNetworkAvailability(wasBound); } }); }
@SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.LOLLIPOP) public static void requestNetwork(Context context) { if (!Utils.postVersion(Build.VERSION_CODES.LOLLIPOP)) { return; } setUpConnectivityManager(context); NetworkRequest.Builder builder = new NetworkRequest.Builder(); builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); if (mCallback != null) { try { mConnectivityManager.unregisterNetworkCallback(mCallback); } catch (IllegalArgumentException e) { e.printStackTrace(); } } mCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { if (mCallback != null) { if (Utils.postVersion(Build.VERSION_CODES.M)) { mConnectivityManager.bindProcessToNetwork(network); } else { ConnectivityManager.setProcessDefaultNetwork(network); } } } }; mConnectivityManager.requestNetwork(builder.build(), mCallback); }
@SuppressLint({"NewApi"}) public NetworkChangeNotifierAutoDetect(NetworkChangeNotifierAutoDetect.Observer paramObserver, Context paramContext, NetworkChangeNotifierAutoDetect.RegistrationPolicy paramRegistrationPolicy) { ThreadUtils.b(); this.b = paramObserver; this.c = paramContext.getApplicationContext(); this.e = new rja(paramContext); this.i = new rji(paramContext); if (Build.VERSION.SDK_INT >= 21) { this.f = new rjb(this); } for (this.g = new NetworkRequest.Builder().addCapability(12).build();; this.g = null) { rjh localrjh = rja.a(this.e.a.getActiveNetworkInfo()); this.j = a(localrjh); this.k = e(localrjh); this.l = b(localrjh); this.a = new rjg(this.i.c); this.d = paramRegistrationPolicy; this.d.a(this); return; this.f = null; } }
protected final void a() { NetworkChangeNotifierAutoDetect localNetworkChangeNotifierAutoDetect = this.a; if (!localNetworkChangeNotifierAutoDetect.h) { rjh localrjh = rja.a(localNetworkChangeNotifierAutoDetect.e.a.getActiveNetworkInfo()); localNetworkChangeNotifierAutoDetect.c(localrjh); localNetworkChangeNotifierAutoDetect.d(localrjh); localNetworkChangeNotifierAutoDetect.c.registerReceiver(localNetworkChangeNotifierAutoDetect, localNetworkChangeNotifierAutoDetect.a); localNetworkChangeNotifierAutoDetect.h = true; if (localNetworkChangeNotifierAutoDetect.f != null) { rja localrja = localNetworkChangeNotifierAutoDetect.e; NetworkRequest localNetworkRequest = localNetworkChangeNotifierAutoDetect.g; ConnectivityManager.NetworkCallback localNetworkCallback = localNetworkChangeNotifierAutoDetect.f; localrja.a.registerNetworkCallback(localNetworkRequest, localNetworkCallback); Network[] arrayOfNetwork = localNetworkChangeNotifierAutoDetect.e.a.getAllNetworks(); int[] arrayOfInt = new int[arrayOfNetwork.length]; for (int i = 0; i < arrayOfNetwork.length; i++) { arrayOfInt[i] = Integer.parseInt(arrayOfNetwork[i].toString()); } localNetworkChangeNotifierAutoDetect.b.a(arrayOfInt); } } }
/** * Constructs a NetworkChangeNotifierAutoDetect. Lives on calling thread, receives broadcast * notifications on the UI thread and forwards the notifications to be processed on the calling * thread. * @param policy The RegistrationPolicy which determines when this class should watch * for network changes (e.g. see (@link RegistrationPolicyAlwaysRegister} and * {@link RegistrationPolicyApplicationStatus}). */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) public NetworkChangeNotifierAutoDetect(Observer observer, RegistrationPolicy policy) { mLooper = Looper.myLooper(); mHandler = new Handler(mLooper); mObserver = observer; mConnectivityManagerDelegate = new ConnectivityManagerDelegate(ContextUtils.getApplicationContext()); mWifiManagerDelegate = new WifiManagerDelegate(ContextUtils.getApplicationContext()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mNetworkCallback = new MyNetworkCallback(); mNetworkRequest = new NetworkRequest.Builder() .addCapability(NET_CAPABILITY_INTERNET) // Need to hear about VPNs too. .removeCapability(NET_CAPABILITY_NOT_VPN) .build(); } else { mNetworkCallback = null; mNetworkRequest = null; } mNetworkState = getCurrentNetworkState(); mIntentFilter = new NetworkConnectivityIntentFilter(); mIgnoreNextBroadcast = false; mShouldSignalObserver = false; mRegistrationPolicy = policy; mRegistrationPolicy.init(this); mShouldSignalObserver = true; }
private void checkConnectivity() { final ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); connected = activeNetworkInfo != null && activeNetworkInfo.isConnected(); if (!connected) { loading.setVisibility(View.GONE); if (noConnection == null) { final ViewStub stub = findViewById(R.id.stub_no_connection); noConnection = (ImageView) stub.inflate(); } final AnimatedVectorDrawable avd = (AnimatedVectorDrawable) getDrawable(R.drawable.avd_no_connection); if (noConnection != null && avd != null) { noConnection.setImageDrawable(avd); avd.start(); } connectivityManager.registerNetworkCallback( new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(), connectivityCallback); monitoringConnectivity = true; } }
@TargetApi(21) private static void request(Context context, final Callback callback) { // Request a data connection final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); final NetworkRequest networkRequest = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build(); // Use a countdownlatch because this may never return, and we want to mark the MMS // as failed in that case. final CountDownLatch latch = new CountDownLatch(1); boolean success = false; ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(android.net.Network network) { super.onAvailable(network); ConnectivityManager.setProcessDefaultNetwork(network); latch.countDown(); } }; connectivityManager.requestNetwork(networkRequest, networkCallback); try { success = latch.await(TIMEOUT, TimeUnit.SECONDS); } catch (InterruptedException e) { e.printStackTrace(); } if (success) { callback.onSuccess(); } else { callback.onFail(); } connectivityManager.unregisterNetworkCallback(networkCallback); }
@TargetApi(21) @Override public void setImageUrl(String url, ImageLoader imageLoader) { mShowLocal = TextUtils.isEmpty(url); if (mDiskCache.get(url) == null && !OnlineAccessVerifier.check(getContext())) { this.setImageBitmap(null); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { final ConnectivityManager cm = (ConnectivityManager) getContext().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); networkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { super.onAvailable(network); new CoverArtLoader((MainActivity) FadeInNetworkImageView.this.getActivity()).execute(mLyrics); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && networkCallback != null) try { cm.unregisterNetworkCallback(networkCallback); } catch (IllegalArgumentException ignored) { } } }; NetworkRequest request = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET).build(); cm.registerNetworkCallback(request, networkCallback); } defaultShown = true; } else { super.setImageUrl(url, imageLoader); if (!TextUtils.isEmpty(url)) defaultShown = false; } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) @Test public void givenRegisteredMerlinNetworkCallbacks_whenBindingForASecondTime_thenOriginalNetworkCallbacksIsRegisteredAgain() { ArgumentCaptor<ConnectivityCallbacks> merlinNetworkCallback = givenRegisteredMerlinNetworkCallbacks(); connectivityChangesRegister.register(connectivityChangesNotifier); verify(connectivityManager, times(2)).registerNetworkCallback(refEq((new NetworkRequest.Builder()).build()), eq(merlinNetworkCallback.getValue())); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private ArgumentCaptor<ConnectivityCallbacks> givenRegisteredMerlinNetworkCallbacks() { given(androidVersion.isLollipopOrHigher()).willReturn(true); connectivityChangesRegister.register(connectivityChangesNotifier); ArgumentCaptor<ConnectivityCallbacks> argumentCaptor = ArgumentCaptor.forClass(ConnectivityCallbacks.class); verify(connectivityManager).registerNetworkCallback(refEq((new NetworkRequest.Builder()).build()), argumentCaptor.capture()); return argumentCaptor; }
/** * Registers networkCallback to receive notifications about networks * that satisfy networkRequest. * Only callable on Lollipop and newer releases. */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) void registerNetworkCallback( NetworkRequest networkRequest, NetworkCallback networkCallback) { mConnectivityManager.registerNetworkCallback(networkRequest, networkCallback); }
@Override public void registerNetworkCallback( NetworkRequest networkRequest, NetworkCallback networkCallback) { mLastRegisteredNetworkCallback = networkCallback; }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void setNetNotifyForNougat(ConnectivityManager.NetworkCallback callback) { ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE); connectivityManager.requestNetwork(new NetworkRequest.Builder().build(), callback); }