Revert all new network detection API usage and refactorings.
This commit is contained in:
parent
5e46e1e3d9
commit
7e6fcb80a3
7 changed files with 92 additions and 121 deletions
|
@ -1,9 +1,14 @@
|
||||||
package org.thoughtcrime.securesms.components.settings.app.privacy.advanced
|
package org.thoughtcrime.securesms.components.settings.app.privacy.advanced
|
||||||
|
|
||||||
import android.app.ProgressDialog
|
import android.app.ProgressDialog
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.content.IntentFilter
|
||||||
import android.graphics.PorterDuff
|
import android.graphics.PorterDuff
|
||||||
import android.graphics.PorterDuffColorFilter
|
import android.graphics.PorterDuffColorFilter
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.net.ConnectivityManager
|
||||||
import android.text.SpannableStringBuilder
|
import android.text.SpannableStringBuilder
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
@ -27,7 +32,9 @@ import org.thoughtcrime.securesms.util.ViewUtil
|
||||||
|
|
||||||
class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences__advanced) {
|
class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences__advanced) {
|
||||||
|
|
||||||
lateinit var viewModel: AdvancedPrivacySettingsViewModel
|
private lateinit var viewModel: AdvancedPrivacySettingsViewModel
|
||||||
|
|
||||||
|
private var networkReceiver: NetworkReceiver? = null
|
||||||
|
|
||||||
private val sealedSenderSummary: CharSequence by lazy {
|
private val sealedSenderSummary: CharSequence by lazy {
|
||||||
SpanUtil.learnMore(
|
SpanUtil.learnMore(
|
||||||
|
@ -60,6 +67,12 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
viewModel.refresh()
|
viewModel.refresh()
|
||||||
|
registerNetworkReceiver()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
unregisterNetworkReceiver()
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun bindAdapter(adapter: DSLSettingsAdapter) {
|
override fun bindAdapter(adapter: DSLSettingsAdapter) {
|
||||||
|
@ -195,4 +208,27 @@ class AdvancedPrivacySettingsFragment : DSLSettingsFragment(R.string.preferences
|
||||||
getString(R.string.preferences__free_private_messages_and_calls)
|
getString(R.string.preferences__free_private_messages_and_calls)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
private fun registerNetworkReceiver() {
|
||||||
|
val context: Context? = context
|
||||||
|
if (context != null && networkReceiver == null) {
|
||||||
|
networkReceiver = NetworkReceiver()
|
||||||
|
context.registerReceiver(networkReceiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun unregisterNetworkReceiver() {
|
||||||
|
val context: Context? = context
|
||||||
|
if (context != null && networkReceiver != null) {
|
||||||
|
context.unregisterReceiver(networkReceiver)
|
||||||
|
networkReceiver = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private inner class NetworkReceiver : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context, intent: Intent) {
|
||||||
|
viewModel.refresh()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,6 @@ import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
import io.reactivex.rxjava3.disposables.CompositeDisposable
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraintObserver
|
|
||||||
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob
|
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob
|
||||||
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob
|
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob
|
||||||
import org.thoughtcrime.securesms.keyvalue.SettingsValues
|
import org.thoughtcrime.securesms.keyvalue.SettingsValues
|
||||||
|
@ -22,7 +21,7 @@ import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState
|
||||||
class AdvancedPrivacySettingsViewModel(
|
class AdvancedPrivacySettingsViewModel(
|
||||||
private val sharedPreferences: SharedPreferences,
|
private val sharedPreferences: SharedPreferences,
|
||||||
private val repository: AdvancedPrivacySettingsRepository
|
private val repository: AdvancedPrivacySettingsRepository
|
||||||
) : ViewModel(), NetworkConstraintObserver.NetworkListener {
|
) : ViewModel() {
|
||||||
|
|
||||||
private val store = Store(getState())
|
private val store = Store(getState())
|
||||||
private val singleEvents = SingleLiveEvent<Event>()
|
private val singleEvents = SingleLiveEvent<Event>()
|
||||||
|
@ -32,7 +31,6 @@ class AdvancedPrivacySettingsViewModel(
|
||||||
val disposables: CompositeDisposable = CompositeDisposable()
|
val disposables: CompositeDisposable = CompositeDisposable()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
NetworkConstraintObserver.getInstance(ApplicationDependencies.getApplication()).addListener(this)
|
|
||||||
disposables.add(
|
disposables.add(
|
||||||
ApplicationDependencies.getSignalWebSocket().webSocketState
|
ApplicationDependencies.getSignalWebSocket().webSocketState
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
@ -87,12 +85,7 @@ class AdvancedPrivacySettingsViewModel(
|
||||||
store.update { getState().copy(showProgressSpinner = it.showProgressSpinner) }
|
store.update { getState().copy(showProgressSpinner = it.showProgressSpinner) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNetworkChanged() {
|
|
||||||
refresh()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCleared() {
|
override fun onCleared() {
|
||||||
NetworkConstraintObserver.getInstance(ApplicationDependencies.getApplication()).removeListener(this)
|
|
||||||
disposables.dispose()
|
disposables.dispose()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,12 @@ package org.thoughtcrime.securesms.jobmanager.impl;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.app.job.JobInfo;
|
import android.app.job.JobInfo;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.NetworkInfo;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
|
|
||||||
import org.thoughtcrime.securesms.jobmanager.Constraint;
|
import org.thoughtcrime.securesms.jobmanager.Constraint;
|
||||||
|
@ -39,8 +43,11 @@ public class NetworkConstraint implements Constraint {
|
||||||
return "NETWORK";
|
return "NETWORK";
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isMet(@NonNull Application application) {
|
public static boolean isMet(@NonNull Context context) {
|
||||||
return NetworkConstraintObserver.getInstance(application).hasInternet();
|
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
|
||||||
|
|
||||||
|
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final class Factory implements Constraint.Factory<NetworkConstraint> {
|
public static final class Factory implements Constraint.Factory<NetworkConstraint> {
|
||||||
|
|
|
@ -6,112 +6,33 @@ import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.NetworkInfo;
|
|
||||||
import android.os.Build;
|
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
|
|
||||||
import org.signal.core.util.logging.Log;
|
import org.signal.core.util.logging.Log;
|
||||||
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver;
|
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver;
|
||||||
|
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class NetworkConstraintObserver implements ConstraintObserver {
|
public class NetworkConstraintObserver implements ConstraintObserver {
|
||||||
|
|
||||||
private static final String REASON = Log.tag(NetworkConstraintObserver.class);
|
private static final String REASON = Log.tag(NetworkConstraintObserver.class);
|
||||||
private static final String TAG = Log.tag(NetworkConstraintObserver.class);
|
|
||||||
|
|
||||||
private final Application application;
|
private final Application application;
|
||||||
|
|
||||||
private volatile Notifier notifier;
|
public NetworkConstraintObserver(Application application) {
|
||||||
private volatile boolean hasInternet;
|
|
||||||
|
|
||||||
private final Set<NetworkListener> networkListeners = new HashSet<>();
|
|
||||||
|
|
||||||
private static volatile NetworkConstraintObserver instance;
|
|
||||||
|
|
||||||
public static NetworkConstraintObserver getInstance(@NonNull Application application) {
|
|
||||||
if (instance == null) {
|
|
||||||
synchronized (NetworkConstraintObserver.class) {
|
|
||||||
if (instance == null) {
|
|
||||||
instance = new NetworkConstraintObserver(application);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
private NetworkConstraintObserver(Application application) {
|
|
||||||
this.application = application;
|
this.application = application;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void register(@NonNull Notifier notifier) {
|
public void register(@NonNull Notifier notifier) {
|
||||||
this.notifier = notifier;
|
|
||||||
this.hasInternet = isActiveNetworkConnected(application);
|
|
||||||
|
|
||||||
requestNetwork();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isActiveNetworkConnected(@NonNull Context context) {
|
|
||||||
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
|
||||||
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
|
|
||||||
|
|
||||||
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void requestNetwork() {
|
|
||||||
application.registerReceiver(new BroadcastReceiver() {
|
application.registerReceiver(new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
hasInternet = isActiveNetworkConnected(context);
|
NetworkConstraint constraint = new NetworkConstraint.Factory(application).create();
|
||||||
|
|
||||||
if (hasInternet) {
|
if (constraint.isMet()) {
|
||||||
Log.i(TAG, logPrefix() + "Network available.");
|
|
||||||
notifier.onConstraintMet(REASON);
|
notifier.onConstraintMet(REASON);
|
||||||
} else {
|
|
||||||
Log.w(TAG, logPrefix() + "Network unavailable.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
notifyListeners();
|
|
||||||
}
|
}
|
||||||
}, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
}, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasInternet() {
|
|
||||||
return hasInternet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addListener(@Nullable NetworkListener networkListener) {
|
|
||||||
synchronized (networkListeners) {
|
|
||||||
networkListeners.add(networkListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void removeListener(@Nullable NetworkListener networkListener) {
|
|
||||||
if (networkListener == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
synchronized (networkListeners) {
|
|
||||||
networkListeners.remove(networkListener);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void notifyListeners() {
|
|
||||||
synchronized (networkListeners) {
|
|
||||||
//noinspection SimplifyStreamApiCallChains
|
|
||||||
networkListeners.stream().forEach(NetworkListener::onNetworkChanged);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String logPrefix() {
|
|
||||||
return "[API " + Build.VERSION.SDK_INT + "] ";
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface NetworkListener {
|
|
||||||
void onNetworkChanged();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,7 +250,7 @@ public final class JobManagerFactories {
|
||||||
public static List<ConstraintObserver> getConstraintObservers(@NonNull Application application) {
|
public static List<ConstraintObserver> getConstraintObservers(@NonNull Application application) {
|
||||||
return Arrays.asList(CellServiceConstraintObserver.getInstance(application),
|
return Arrays.asList(CellServiceConstraintObserver.getInstance(application),
|
||||||
new ChargingConstraintObserver(application),
|
new ChargingConstraintObserver(application),
|
||||||
NetworkConstraintObserver.getInstance(application),
|
new NetworkConstraintObserver(application),
|
||||||
new SqlCipherMigrationConstraintObserver(),
|
new SqlCipherMigrationConstraintObserver(),
|
||||||
new DecryptionsDrainedConstraintObserver(),
|
new DecryptionsDrainedConstraintObserver(),
|
||||||
new NotInCallConstraintObserver());
|
new NotInCallConstraintObserver());
|
||||||
|
|
|
@ -2,7 +2,11 @@ package org.thoughtcrime.securesms.messages;
|
||||||
|
|
||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.IntentFilter;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
@ -17,7 +21,6 @@ import org.thoughtcrime.securesms.R;
|
||||||
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil;
|
import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil;
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
||||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraintObserver;
|
|
||||||
import org.thoughtcrime.securesms.jobs.PushDecryptDrainedJob;
|
import org.thoughtcrime.securesms.jobs.PushDecryptDrainedJob;
|
||||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||||
import org.thoughtcrime.securesms.messages.IncomingMessageProcessor.Processor;
|
import org.thoughtcrime.securesms.messages.IncomingMessageProcessor.Processor;
|
||||||
|
@ -53,7 +56,7 @@ public class IncomingMessageObserver {
|
||||||
private final Application context;
|
private final Application context;
|
||||||
private final SignalServiceNetworkAccess networkAccess;
|
private final SignalServiceNetworkAccess networkAccess;
|
||||||
private final List<Runnable> decryptionDrainedListeners;
|
private final List<Runnable> decryptionDrainedListeners;
|
||||||
private final NetworkConstraintObserver.NetworkListener networkListener;
|
private final BroadcastReceiver connectionReceiver;
|
||||||
|
|
||||||
private boolean appVisible;
|
private boolean appVisible;
|
||||||
|
|
||||||
|
@ -88,11 +91,10 @@ public class IncomingMessageObserver {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
networkListener = this::networkChanged;
|
connectionReceiver = new BroadcastReceiver() {
|
||||||
NetworkConstraintObserver.getInstance(this.context).addListener(networkListener);
|
@Override
|
||||||
}
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
synchronized (IncomingMessageObserver.this) {
|
||||||
private synchronized void networkChanged() {
|
|
||||||
if (!NetworkConstraint.isMet(context)) {
|
if (!NetworkConstraint.isMet(context)) {
|
||||||
Log.w(TAG, "Lost network connection. Shutting down our websocket connections and resetting the drained state.");
|
Log.w(TAG, "Lost network connection. Shutting down our websocket connections and resetting the drained state.");
|
||||||
networkDrained = false;
|
networkDrained = false;
|
||||||
|
@ -101,6 +103,11 @@ public class IncomingMessageObserver {
|
||||||
}
|
}
|
||||||
IncomingMessageObserver.this.notifyAll();
|
IncomingMessageObserver.this.notifyAll();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
context.registerReceiver(connectionReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||||
|
}
|
||||||
|
|
||||||
public synchronized void notifyRegistrationChanged() {
|
public synchronized void notifyRegistrationChanged() {
|
||||||
notifyAll();
|
notifyAll();
|
||||||
|
@ -169,7 +176,7 @@ public class IncomingMessageObserver {
|
||||||
public void terminateAsync() {
|
public void terminateAsync() {
|
||||||
INSTANCE_COUNT.decrementAndGet();
|
INSTANCE_COUNT.decrementAndGet();
|
||||||
|
|
||||||
NetworkConstraintObserver.getInstance(context).removeListener(networkListener);
|
context.unregisterReceiver(connectionReceiver);
|
||||||
|
|
||||||
SignalExecutors.BOUNDED.execute(() -> {
|
SignalExecutors.BOUNDED.execute(() -> {
|
||||||
Log.w(TAG, "Beginning termination.");
|
Log.w(TAG, "Beginning termination.");
|
||||||
|
|
|
@ -6,6 +6,8 @@ import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.net.ConnectivityManager;
|
||||||
|
import android.net.NetworkInfo;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.telephony.PhoneStateListener;
|
import android.telephony.PhoneStateListener;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
@ -54,7 +56,7 @@ public final class WebRtcCallService extends Service implements SignalAudioManag
|
||||||
|
|
||||||
private SignalCallManager callManager;
|
private SignalCallManager callManager;
|
||||||
|
|
||||||
private NetworkListener networkListener;
|
private NetworkReceiver networkReceiver;
|
||||||
private PowerButtonReceiver powerButtonReceiver;
|
private PowerButtonReceiver powerButtonReceiver;
|
||||||
private UncaughtExceptionHandlerManager uncaughtExceptionHandlerManager;
|
private UncaughtExceptionHandlerManager uncaughtExceptionHandlerManager;
|
||||||
private PhoneStateListener hangUpRtcOnDeviceCallAnswered;
|
private PhoneStateListener hangUpRtcOnDeviceCallAnswered;
|
||||||
|
@ -224,16 +226,18 @@ public final class WebRtcCallService extends Service implements SignalAudioManag
|
||||||
}
|
}
|
||||||
|
|
||||||
private void registerNetworkReceiver() {
|
private void registerNetworkReceiver() {
|
||||||
if (networkListener == null) {
|
if (networkReceiver == null) {
|
||||||
networkListener = new NetworkListener();
|
networkReceiver = new NetworkReceiver();
|
||||||
NetworkConstraintObserver.getInstance(ApplicationDependencies.getApplication()).addListener(networkListener);
|
|
||||||
|
registerReceiver(networkReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void unregisterNetworkReceiver() {
|
private void unregisterNetworkReceiver() {
|
||||||
if (networkListener != null) {
|
if (networkReceiver != null) {
|
||||||
NetworkConstraintObserver.getInstance(ApplicationDependencies.getApplication()).removeListener(networkListener);
|
unregisterReceiver(networkReceiver);
|
||||||
networkListener = null;
|
|
||||||
|
networkReceiver = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,10 +282,13 @@ public final class WebRtcCallService extends Service implements SignalAudioManag
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class NetworkListener implements NetworkConstraintObserver.NetworkListener {
|
private static class NetworkReceiver extends BroadcastReceiver {
|
||||||
@Override
|
@Override
|
||||||
public void onNetworkChanged() {
|
public void onReceive(Context context, Intent intent) {
|
||||||
ApplicationDependencies.getSignalCallManager().networkChange(NetworkConstraint.isMet(ApplicationDependencies.getApplication()));
|
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||||
|
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
|
||||||
|
|
||||||
|
ApplicationDependencies.getSignalCallManager().networkChange(activeNetworkInfo != null && activeNetworkInfo.isConnected());
|
||||||
ApplicationDependencies.getSignalCallManager().bandwidthModeUpdate();
|
ApplicationDependencies.getSignalCallManager().bandwidthModeUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue