Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d50bfe4 authored by Neil Fuller's avatar Neil Fuller
Browse files

Disable auto time zone on non-telephony devices

Disable auto time zone detection explicitly based on device
capabilities.

The TimeZoneDetector now enforces that the time zone cannot be set
manually when "auto_zone" is 1 (on). On devices without a telephony
network (the only devices that support auto time zone currently),
nothing explicitly sets the "auto_zone" value to 0 leading to problems
when the user tries to manually set the time zone. Therefore, to retain
the check, the code needs to ignore the auto_zone setting for devices
that inherently cannot support auto time zone detection.

Bug: 150583524
Bug: 150156441
Test: treehugger
Merged-In: Iea9c9e04c5617ccf0ba20511344884d3d88f2a9b
Change-Id: Iea9c9e04c5617ccf0ba20511344884d3d88f2a9b
(cherry picked from commit 2c6c3c3d)
parent 920105c3
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.Nullable;
import android.app.AlarmManager;
import android.content.ContentResolver;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.SystemProperties;
import android.provider.Settings;

@@ -40,8 +41,21 @@ public final class TimeZoneDetectorCallbackImpl implements TimeZoneDetectorStrat

    @Override
    public boolean isAutoTimeZoneDetectionEnabled() {
        if (isAutoTimeZoneDetectionSupported()) {
            return Settings.Global.getInt(mCr, Settings.Global.AUTO_TIME_ZONE, 1 /* default */) > 0;
        }
        return false;
    }

    private boolean isAutoTimeZoneDetectionSupported() {
        return deviceHasTelephonyNetwork();
    }

    private boolean deviceHasTelephonyNetwork() {
        // TODO b/150583524 Avoid the use of a deprecated API.
        return mContext.getSystemService(ConnectivityManager.class)
                .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
    }

    @Override
    public boolean isDeviceTimeZoneInitialized() {