From f91494f813fc223a2930a584c826769f19a405d0 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Thu, 17 Mar 2022 14:21:38 -0400 Subject: [PATCH] Remove newer network detection APIs. --- .../impl/NetworkConstraintObserver.java | 106 +++--------------- 1 file changed, 13 insertions(+), 93 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkConstraintObserver.java b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkConstraintObserver.java index 425dd11e1..ea71004c3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkConstraintObserver.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobmanager/impl/NetworkConstraintObserver.java @@ -1,28 +1,21 @@ package org.thoughtcrime.securesms.jobmanager.impl; -import android.annotation.TargetApi; import android.app.Application; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; -import android.net.Network; -import android.net.NetworkCapabilities; import android.net.NetworkInfo; -import android.net.NetworkRequest; import android.os.Build; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; import org.signal.core.util.logging.Log; -import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.ConstraintObserver; import java.util.HashSet; -import java.util.Objects; import java.util.Set; public class NetworkConstraintObserver implements ConstraintObserver { @@ -59,10 +52,9 @@ public class NetworkConstraintObserver implements ConstraintObserver { this.notifier = notifier; this.hasInternet = isActiveNetworkConnected(application); - requestNetwork(0); + requestNetwork(); } - @TargetApi(19) private static boolean isActiveNetworkConnected(@NonNull Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); @@ -70,39 +62,22 @@ public class NetworkConstraintObserver implements ConstraintObserver { return activeNetworkInfo != null && activeNetworkInfo.isConnected(); } - private void requestNetwork(int retryCount) { - optimisticallyUpdateNetworkState(); + private void requestNetwork() { + application.registerReceiver(new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + hasInternet = isActiveNetworkConnected(context); - if (Build.VERSION.SDK_INT < 24 || retryCount > 5) { - hasInternet = isActiveNetworkConnected(application); - - application.registerReceiver(new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - hasInternet = isActiveNetworkConnected(context); - - if (hasInternet) { - Log.i(TAG, logPrefix() + "Network available."); - notifier.onConstraintMet(REASON); - } else { - Log.w(TAG, logPrefix() + "Network unavailable."); - } - - notifyListeners(); + if (hasInternet) { + Log.i(TAG, logPrefix() + "Network available."); + notifier.onConstraintMet(REASON); + } else { + Log.w(TAG, logPrefix() + "Network unavailable."); } - }, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); - } else { - NetworkRequest request = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) - .build(); - ConnectivityManager connectivityManager = Objects.requireNonNull(ContextCompat.getSystemService(application, ConnectivityManager.class)); - - if (Build.VERSION.SDK_INT >= 26) { - connectivityManager.requestNetwork(request, new NetworkStateListener26(retryCount), 1000); - } else { - connectivityManager.requestNetwork(request, new NetworkStateListener24()); + notifyListeners(); } - } + }, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); } public boolean hasInternet() { @@ -125,22 +100,6 @@ public class NetworkConstraintObserver implements ConstraintObserver { } } - /** - * The newer API methods are occasionally unreliable. This lets us assume the best case scenario, by using both new and old methods and taking the most - * optimistic result. - */ - private void optimisticallyUpdateNetworkState() { - final boolean currentState = hasInternet; - final boolean newState = isActiveNetworkConnected(application); - - if (newState && !currentState) { - Log.w(TAG, logPrefix() + "isActiveNetworkConnected() thinks we're connected, but other methods indicate we're not. Assuming we have internet and notifying listeners."); - this.hasInternet = newState; - notifier.onConstraintMet(REASON); - notifyListeners(); - } - } - private void notifyListeners() { synchronized (networkListeners) { //noinspection SimplifyStreamApiCallChains @@ -152,45 +111,6 @@ public class NetworkConstraintObserver implements ConstraintObserver { return "[API " + Build.VERSION.SDK_INT + "] "; } - @TargetApi(24) - private class NetworkStateListener24 extends ConnectivityManager.NetworkCallback { - @Override - public void onAvailable(@NonNull Network network) { - Log.i(TAG, logPrefix() + "Network available. " + network.hashCode()); - hasInternet = true; - notifier.onConstraintMet(REASON); - notifyListeners(); - } - - @Override - public void onLost(@NonNull Network network) { - Log.w(TAG, logPrefix() + "Network unavailable. " + network.hashCode()); - if (isActiveNetworkConnected(ApplicationDependencies.getApplication())) { - Log.w(TAG, logPrefix() + "We got the onLost() event, but isActiveNetworkConnected() returns true. Assuming we have internet."); - hasInternet = true; - } else { - hasInternet = false; - } - notifyListeners(); - } - } - - @TargetApi(26) - private class NetworkStateListener26 extends NetworkStateListener24 { - private final int retryCount; - private final long createTime = System.currentTimeMillis(); - - public NetworkStateListener26(int retryCount) { - this.retryCount = retryCount; - } - - @Override - public void onUnavailable() { - Log.w(TAG, logPrefix() + "No networks available or timeout hit. Retry count: " + retryCount + ", Time since creation: " + (System.currentTimeMillis() - createTime) + " ms"); - requestNetwork(retryCount + 1); - } - } - public interface NetworkListener { void onNetworkChanged(); }