From bd39ad8c077c5762813693e580dd126c9f58589e Mon Sep 17 00:00:00 2001 From: Bruno Martins Date: Tue, 21 Apr 2020 00:17:21 +0100 Subject: profiles: Account for deprecated location API methods Settings.Secure#setLocationProviderEnabled is deprecated since API level 19. Change-Id: I7d1d13de3af100fb81d87e957acf89fb7f08cb7d --- api/lineage_current.txt | 3 ++- .../java/lineageos/profiles/ConnectionSettings.java | 20 ++++++++++++++++---- .../tests/profiles/unit/ConnectionSettingsTest.java | 13 +++++++------ .../lineageos/tests/profiles/unit/ProfileTest.java | 5 +++-- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/api/lineage_current.txt b/api/lineage_current.txt index 233cf8ef..93a4888a 100644 --- a/api/lineage_current.txt +++ b/api/lineage_current.txt @@ -623,12 +623,13 @@ package lineageos.profiles { method public void writeToParcel(android.os.Parcel, int); field public static final int PROFILE_CONNECTION_2G3G4G = 9; // 0x9 field public static final int PROFILE_CONNECTION_BLUETOOTH = 7; // 0x7 - field public static final int PROFILE_CONNECTION_GPS = 4; // 0x4 + field public static final int PROFILE_CONNECTION_LOCATION = 6; // 0x6 field public static final int PROFILE_CONNECTION_MOBILEDATA = 0; // 0x0 field public static final int PROFILE_CONNECTION_NFC = 8; // 0x8 field public static final int PROFILE_CONNECTION_SYNC = 5; // 0x5 field public static final int PROFILE_CONNECTION_WIFI = 1; // 0x1 field public static final int PROFILE_CONNECTION_WIFIAP = 2; // 0x2 + field public static final deprecated int PROFILE_CONNECTION_GPS = 4; // 0x4 field public static final deprecated int PROFILE_CONNECTION_WIMAX = 3; // 0x3 } diff --git a/sdk/src/java/lineageos/profiles/ConnectionSettings.java b/sdk/src/java/lineageos/profiles/ConnectionSettings.java index 66fda392..9891d5ef 100644 --- a/sdk/src/java/lineageos/profiles/ConnectionSettings.java +++ b/sdk/src/java/lineageos/profiles/ConnectionSettings.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2015 The CyanogenMod Project + * 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,9 +27,11 @@ import android.net.wifi.WifiManager; import android.nfc.NfcAdapter; import android.os.Parcel; import android.os.Parcelable; +import android.os.UserHandle; import android.provider.Settings; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; + import com.android.internal.telephony.RILConstants; import lineageos.os.Build; @@ -96,7 +99,10 @@ public final class ConnectionSettings implements Parcelable { /** * The {@link #PROFILE_CONNECTION_GPS} allows for enabling and disabling the GPS radio (if exists) * on the device. Boolean connection settings {@link BooleanState} + * + * @deprecated Replaced by PROFILE_CONNECTION_LOCATION */ + @Deprecated public static final int PROFILE_CONNECTION_GPS = 4; /** @@ -105,6 +111,12 @@ public final class ConnectionSettings implements Parcelable { */ public static final int PROFILE_CONNECTION_SYNC = 5; + /** + * The {@link #PROFILE_CONNECTION_LOCATION} allows for enabling and disabling location services + * on the device. Boolean connection settings {@link BooleanState} + */ + public static final int PROFILE_CONNECTION_LOCATION = 6; + /** * The {@link #PROFILE_CONNECTION_BLUETOOTH} allows for enabling and disabling the Bluetooth device * (if exists) on the device. Boolean connection settings {@link BooleanState} @@ -321,11 +333,11 @@ public final class ConnectionSettings implements Parcelable { bta.disable(); } break; - case PROFILE_CONNECTION_GPS: - currentState = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); + case PROFILE_CONNECTION_LOCATION: + currentState = lm.isLocationEnabled(); if (currentState != forcedState) { - Settings.Secure.setLocationProviderEnabled(context.getContentResolver(), - LocationManager.GPS_PROVIDER, forcedState); + lm.setLocationEnabledForUser(forcedState, + new UserHandle(UserHandle.USER_CURRENT)); } break; case PROFILE_CONNECTION_SYNC: diff --git a/tests/src/org/lineageos/tests/profiles/unit/ConnectionSettingsTest.java b/tests/src/org/lineageos/tests/profiles/unit/ConnectionSettingsTest.java index 4564727e..78e4ac3c 100644 --- a/tests/src/org/lineageos/tests/profiles/unit/ConnectionSettingsTest.java +++ b/tests/src/org/lineageos/tests/profiles/unit/ConnectionSettingsTest.java @@ -1,5 +1,6 @@ /** - * Copyright (c) 2016, The CyanogenMod Project + * Copyright (C) 2016 The CyanogenMod Project + * 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,8 +25,8 @@ public class ConnectionSettingsTest extends AndroidTestCase { @SmallTest public void testConstructManually() { ConnectionSettings connectionSettings = new ConnectionSettings( - ConnectionSettings.PROFILE_CONNECTION_GPS); - assertEquals(ConnectionSettings.PROFILE_CONNECTION_GPS, + ConnectionSettings.PROFILE_CONNECTION_LOCATION); + assertEquals(ConnectionSettings.PROFILE_CONNECTION_LOCATION, connectionSettings.getConnectionId()); assertNotNull(connectionSettings); } @@ -33,12 +34,12 @@ public class ConnectionSettingsTest extends AndroidTestCase { @SmallTest public void testConstructWholly() { ConnectionSettings connectionSettings = - new ConnectionSettings(ConnectionSettings.PROFILE_CONNECTION_GPS, + new ConnectionSettings(ConnectionSettings.PROFILE_CONNECTION_LOCATION, ConnectionSettings.BooleanState.STATE_DISALED, true); assertEquals(true, connectionSettings.isOverride()); assertEquals(ConnectionSettings.BooleanState.STATE_DISALED, connectionSettings.getValue()); - assertEquals(ConnectionSettings.PROFILE_CONNECTION_GPS, + assertEquals(ConnectionSettings.PROFILE_CONNECTION_LOCATION, connectionSettings.getConnectionId()); assertNotNull(connectionSettings); } @@ -46,7 +47,7 @@ public class ConnectionSettingsTest extends AndroidTestCase { @SmallTest public void testVerifyOverride() { ConnectionSettings connectionSettings = new ConnectionSettings( - ConnectionSettings.PROFILE_CONNECTION_GPS); + ConnectionSettings.PROFILE_CONNECTION_LOCATION); connectionSettings.setOverride(true); assertEquals(true, connectionSettings.isOverride()); } diff --git a/tests/src/org/lineageos/tests/profiles/unit/ProfileTest.java b/tests/src/org/lineageos/tests/profiles/unit/ProfileTest.java index ac4b5bbe..3beba541 100644 --- a/tests/src/org/lineageos/tests/profiles/unit/ProfileTest.java +++ b/tests/src/org/lineageos/tests/profiles/unit/ProfileTest.java @@ -1,5 +1,6 @@ /** - * Copyright (c) 2015, The CyanogenMod Project + * Copyright (C) 2015 The CyanogenMod Project + * 2020 The LineageOS Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +52,7 @@ public class ProfileTest extends AndroidTestCase { public void testProfileConnectionSettingsUnravelFromParcel() { Profile profile = new Profile("Connection Profile"); ConnectionSettings expectedConnectionSettings = - new ConnectionSettings(ConnectionSettings.PROFILE_CONNECTION_GPS, + new ConnectionSettings(ConnectionSettings.PROFILE_CONNECTION_LOCATION, ConnectionSettings.BooleanState.STATE_DISALED, true); profile.setConnectionSettings(expectedConnectionSettings); -- cgit v1.2.3