Remove system call triggering location request.
This commit is contained in:
parent
71967b278e
commit
ed73dc2c24
@ -1,106 +0,0 @@
|
||||
package org.thoughtcrime.securesms.jobmanager.impl;
|
||||
|
||||
import android.app.Application;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.HandlerThread;
|
||||
import android.telephony.PhoneStateListener;
|
||||
import android.telephony.ServiceState;
|
||||
import android.telephony.TelephonyCallback;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.RequiresApi;
|
||||
|
||||
import org.signal.core.util.concurrent.SignalExecutors;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.jobmanager.ConstraintObserver;
|
||||
import org.signal.core.util.ServiceUtil;
|
||||
|
||||
public class CellServiceConstraintObserver implements ConstraintObserver {
|
||||
|
||||
private static final String TAG = Log.tag(CellServiceConstraintObserver.class);
|
||||
|
||||
private static final String REASON = Log.tag(CellServiceConstraintObserver.class);
|
||||
|
||||
private volatile Notifier notifier;
|
||||
private volatile ServiceState lastKnownState;
|
||||
|
||||
private static volatile CellServiceConstraintObserver instance;
|
||||
|
||||
public static CellServiceConstraintObserver getInstance(@NonNull Application application) {
|
||||
if (instance == null) {
|
||||
synchronized (CellServiceConstraintObserver.class) {
|
||||
if (instance == null) {
|
||||
instance = new CellServiceConstraintObserver(application);
|
||||
}
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
private CellServiceConstraintObserver(@NonNull Application application) {
|
||||
TelephonyManager telephonyManager = ServiceUtil.getTelephonyManager(application);
|
||||
LegacyServiceStateListener serviceStateListener = new LegacyServiceStateListener();
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 31) {
|
||||
telephonyManager.registerTelephonyCallback(SignalExecutors.BOUNDED, new ServiceStateListenerApi31());
|
||||
} else {
|
||||
HandlerThread handlerThread = SignalExecutors.getAndStartHandlerThread("CellServiceConstraintObserver", Thread.NORM_PRIORITY);
|
||||
Handler handler = new Handler(handlerThread.getLooper());
|
||||
|
||||
handler.post(() -> {
|
||||
telephonyManager.listen(serviceStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(@NonNull Notifier notifier) {
|
||||
this.notifier = notifier;
|
||||
}
|
||||
|
||||
public boolean hasService() {
|
||||
return lastKnownState != null && lastKnownState.getState() == ServiceState.STATE_IN_SERVICE;
|
||||
}
|
||||
|
||||
@RequiresApi(31)
|
||||
private class ServiceStateListenerApi31 extends TelephonyCallback implements TelephonyCallback.ServiceStateListener {
|
||||
@Override
|
||||
public void onServiceStateChanged(@NonNull ServiceState serviceState) {
|
||||
lastKnownState = serviceState;
|
||||
|
||||
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
|
||||
Log.i(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service available.");
|
||||
|
||||
if (notifier != null) {
|
||||
notifier.onConstraintMet(REASON);
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service unavailable. State: " + serviceState.getState());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private class LegacyServiceStateListener extends PhoneStateListener {
|
||||
|
||||
LegacyServiceStateListener() {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceStateChanged(ServiceState serviceState) {
|
||||
lastKnownState = serviceState;
|
||||
|
||||
if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
|
||||
Log.i(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service available.");
|
||||
|
||||
if (notifier != null) {
|
||||
notifier.onConstraintMet(REASON);
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "[API " + Build.VERSION.SDK_INT + "] Cell service unavailable. State: " + serviceState.getState());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,59 +0,0 @@
|
||||
package org.thoughtcrime.securesms.jobmanager.impl;
|
||||
|
||||
import android.app.Application;
|
||||
import android.app.job.JobInfo;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import org.thoughtcrime.securesms.jobmanager.Constraint;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
|
||||
public class NetworkOrCellServiceConstraint implements Constraint {
|
||||
|
||||
public static final String KEY = "NetworkOrCellServiceConstraint";
|
||||
public static final String LEGACY_KEY = "CellServiceConstraint";
|
||||
|
||||
private final Application application;
|
||||
private final NetworkConstraint networkConstraint;
|
||||
|
||||
private NetworkOrCellServiceConstraint(@NonNull Application application) {
|
||||
this.application = application;
|
||||
this.networkConstraint = new NetworkConstraint.Factory(application).create();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NonNull String getFactoryKey() {
|
||||
return KEY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMet() {
|
||||
if (SignalStore.settings().isWifiCallingCompatibilityModeEnabled()) {
|
||||
return networkConstraint.isMet() || hasCellService(application);
|
||||
} else {
|
||||
return hasCellService(application);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void applyToJobInfo(@NonNull JobInfo.Builder jobInfoBuilder) {
|
||||
}
|
||||
|
||||
private static boolean hasCellService(@NonNull Application application) {
|
||||
return CellServiceConstraintObserver.getInstance(application).hasService();
|
||||
}
|
||||
|
||||
public static class Factory implements Constraint.Factory<NetworkOrCellServiceConstraint> {
|
||||
|
||||
private final Application application;
|
||||
|
||||
public Factory(@NonNull Application application) {
|
||||
this.application = application;
|
||||
}
|
||||
|
||||
@Override
|
||||
public NetworkOrCellServiceConstraint create() {
|
||||
return new NetworkOrCellServiceConstraint(application);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13,10 +13,8 @@ import org.thoughtcrime.securesms.jobmanager.impl.AutoDownloadEmojiConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.BackupMessagesConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.BatteryNotLowConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.CellServiceConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.SealedSenderConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.ChargingAndBatteryIsNotLowConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.ChargingConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.DataRestoreConstraint;
|
||||
@ -27,13 +25,13 @@ import org.thoughtcrime.securesms.jobmanager.impl.DeletionNotAwaitingMediaDownlo
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.DiskSpaceNotLowConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkOrCellServiceConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NoRemoteArchiveGarbageCollectionPendingConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NotInCallConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NotInCallConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.RegisteredConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.RestoreAttachmentConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.RestoreAttachmentConstraintObserver;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.SealedSenderConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.StickersNotDownloadingConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.WifiConstraint;
|
||||
import org.thoughtcrime.securesms.jobmanager.migrations.DeprecatedJobMigration;
|
||||
@ -91,16 +89,16 @@ import org.thoughtcrime.securesms.migrations.ProfileSharingUpdateMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.QuoteThumbnailBackfillMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.RebuildMessageSearchIndexMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.RecheckPaymentsMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.ReleaseChannelRecipientFixMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.RecipientSearchMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.ReleaseChannelRecipientFixMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.ResetArchiveTierMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.ResetKeyTransparencyMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.SelfRegisteredStateMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerAdditionMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerDayByDayMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerPackAddition2MigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerLaunchMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerMyDailyLifeMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StickerPackAddition2MigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StorageCapabilityMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StorageFixLocalUnknownMigrationJob;
|
||||
import org.thoughtcrime.securesms.migrations.StorageServiceMigrationJob;
|
||||
@ -450,8 +448,8 @@ public final class JobManagerFactories {
|
||||
put(DeletionNotAwaitingMediaDownloadConstraint.KEY, new DeletionNotAwaitingMediaDownloadConstraint.Factory());
|
||||
put(DiskSpaceNotLowConstraint.KEY, new DiskSpaceNotLowConstraint.Factory());
|
||||
put(NetworkConstraint.KEY, new NetworkConstraint.Factory(application));
|
||||
put(NetworkOrCellServiceConstraint.KEY, new NetworkOrCellServiceConstraint.Factory(application));
|
||||
put(NetworkOrCellServiceConstraint.LEGACY_KEY, new NetworkOrCellServiceConstraint.Factory(application));
|
||||
put("NetworkOrCellServiceConstraint", new NetworkConstraint.Factory(application));
|
||||
put("CellServiceConstraint", new NetworkConstraint.Factory(application));
|
||||
put(NotInCallConstraint.KEY, new NotInCallConstraint.Factory());
|
||||
put(RegisteredConstraint.KEY, new RegisteredConstraint.Factory());
|
||||
put(RestoreAttachmentConstraint.KEY, new RestoreAttachmentConstraint.Factory(application));
|
||||
@ -462,8 +460,7 @@ public final class JobManagerFactories {
|
||||
}
|
||||
|
||||
public static List<ConstraintObserver> getConstraintObservers(@NonNull Application application) {
|
||||
return Arrays.asList(CellServiceConstraintObserver.getInstance(application),
|
||||
new ChargingAndBatteryIsNotLowConstraintObserver(application),
|
||||
return Arrays.asList(new ChargingAndBatteryIsNotLowConstraintObserver(application),
|
||||
new NetworkConstraintObserver(application),
|
||||
new DecryptionsDrainedConstraintObserver(),
|
||||
new NotInCallConstraintObserver(),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user