From 6eac929099da157edcf1ac16aafd195f8b54ac57 Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Fri, 8 Nov 2019 15:11:31 +0900 Subject: [PATCH 1/4] SettingsProvider: use sysprop as API for telephony Bug: 117924132 Bug: 141246285 Test: lunch blueline-userdebug; m checkbuild Change-Id: Ib28d5804dcb8480f5a00a869c16a1112fb2c075d Merged-In: Ib28d5804dcb8480f5a00a869c16a1112fb2c075d --- .../providers/settings/DatabaseHelper.java | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index 6821942111f17..ce48ed6df93b0 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -41,6 +41,7 @@ import android.os.UserHandle; import android.provider.Settings; import android.provider.Settings.Global; import android.provider.Settings.Secure; +import android.sysprop.TelephonyProperties; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; @@ -2496,9 +2497,7 @@ class DatabaseHelper extends SQLiteOpenHelper { // Data roaming default, based on build loadSetting(stmt, Settings.Global.DATA_ROAMING, - "true".equalsIgnoreCase( - SystemProperties.get("ro.com.android.dataroaming", - "false")) ? 1 : 0); + TelephonyProperties.data_roaming().orElse(false) ? 1 : 0); loadBooleanSetting(stmt, Settings.Global.DEVICE_PROVISIONED, R.bool.def_device_provisioned); @@ -2519,9 +2518,7 @@ class DatabaseHelper extends SQLiteOpenHelper { // Mobile Data default, based on build loadSetting(stmt, Settings.Global.MOBILE_DATA, - "true".equalsIgnoreCase( - SystemProperties.get("ro.com.android.mobiledata", - "true")) ? 1 : 0); + TelephonyProperties.mobile_data().orElse(true) ? 1 : 0); loadBooleanSetting(stmt, Settings.Global.NETSTATS_ENABLED, R.bool.def_netstats_enabled); @@ -2575,20 +2572,17 @@ class DatabaseHelper extends SQLiteOpenHelper { // Set the preferred network mode to target desired value or Default // value defined in system property - String val = ""; - String mode; + StringBuilder val = new StringBuilder(); + List defaultNetworks = TelephonyProperties.default_network(); for (int phoneId = 0; - phoneId < getTelephonyManager().getPhoneCount(); phoneId++) { - mode = TelephonyManager.getTelephonyProperty(phoneId, - "ro.telephony.default_network", - Integer.toString(RILConstants.PREFERRED_NETWORK_MODE)); - if (phoneId == 0) { - val = mode; - } else { - val = val + "," + mode; - } + phoneId < TelephonyManager.getDefault().getPhoneCount(); phoneId++) { + int mode = defaultNetworks.size() <= phoneId + || defaultNetworks.get(phoneId) == null + ? RILConstants.PREFERRED_NETWORK_MODE : defaultNetworks.get(phoneId); + if (phoneId > 0) val.append(','); + val.append(mode); } - loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, val); + loadSetting(stmt, Settings.Global.PREFERRED_NETWORK_MODE, val.toString()); // Set the preferred cdma subscription source to target desired value or default // value defined in Phone From 70e03d953d7bc0333699967bf475fa49bda51102 Mon Sep 17 00:00:00 2001 From: Jayachandran C Date: Fri, 15 Nov 2019 16:33:32 -0800 Subject: [PATCH 2/4] Remove usage of Telephonymanager getDefault() hidden API This CL replaces with getSystemService(TelephonyManager.class) Bug: 140768340 Test: Build Change-Id: Ifb7b53af787b86b1d6c2f91a96a330bde57271d7 Merged-In: Ifb7b53af787b86b1d6c2f91a96a330bde57271d7 --- .../com/android/providers/settings/DatabaseHelper.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index ce48ed6df93b0..e6b56825d270f 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -2574,8 +2574,12 @@ class DatabaseHelper extends SQLiteOpenHelper { // value defined in system property StringBuilder val = new StringBuilder(); List defaultNetworks = TelephonyProperties.default_network(); - for (int phoneId = 0; - phoneId < TelephonyManager.getDefault().getPhoneCount(); phoneId++) { + int phoneCount = 1; + TelephonyManager telephonyManager = mContext.getSystemService(TelephonyManager.class); + if (telephonyManager != null) { + phoneCount = telephonyManager.getSupportedModemCount(); + } + for (int phoneId = 0; phoneId < phoneCount; phoneId++) { int mode = defaultNetworks.size() <= phoneId || defaultNetworks.get(phoneId) == null ? RILConstants.PREFERRED_NETWORK_MODE : defaultNetworks.get(phoneId); From 9160670b183b1a702bf46777a495f624a37e049e Mon Sep 17 00:00:00 2001 From: Jayachandran C Date: Mon, 13 Jan 2020 16:01:21 -0800 Subject: [PATCH 3/4] Add new system API constant DEFAULT_PREFERRED_NETWORK_MODE Bug: 140768340 Test: Following tests have been done atest packages/services/Telephony/tests/ atest frameworks/opt/telephony/tests/telephonytests/ Manual sanity to check basic telephony Change-Id: Ia114e4546d88e294ed37b6632a1eae6a06fbf7bc Merged-In: Ia114e4546d88e294ed37b6632a1eae6a06fbf7bc --- api/system-current.txt | 1 + .../android/providers/settings/DatabaseHelper.java | 3 ++- .../java/android/telephony/TelephonyManager.java | 12 ++++++++++++ .../com/android/internal/telephony/RILConstants.java | 5 ++++- 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index b187a783882ef..44fc4c238e81b 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9209,6 +9209,7 @@ package android.telephony { field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1 field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0 field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff + field public static final int DEFAULT_PREFERRED_NETWORK_MODE = 0; // 0x0 field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION"; field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID"; field @Deprecated public static final String EXTRA_APN_PROTOCOL = "apnProto"; diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index e6b56825d270f..64a2d20490389 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -2582,7 +2582,8 @@ class DatabaseHelper extends SQLiteOpenHelper { for (int phoneId = 0; phoneId < phoneCount; phoneId++) { int mode = defaultNetworks.size() <= phoneId || defaultNetworks.get(phoneId) == null - ? RILConstants.PREFERRED_NETWORK_MODE : defaultNetworks.get(phoneId); + ? TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE + : defaultNetworks.get(phoneId); if (phoneId > 0) val.append(','); val.append(mode); } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 059692de134ed..0e08daf70c1d1 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -7632,6 +7632,18 @@ public class TelephonyManager { public static final int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = RILConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; + /** + * The default preferred network mode constant. + * + *

This constant is used in case of nothing is set in + * TelephonyProperties#default_network(). + * + * @hide + */ + @SystemApi + public static final int DEFAULT_PREFERRED_NETWORK_MODE = + RILConstants.DEFAULT_PREFERRED_NETWORK_MODE; + /** * Get the preferred network type. * Used for device configuration by some CDMA operators. diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java index d524299d7ede0..9a69022696f36 100644 --- a/telephony/java/com/android/internal/telephony/RILConstants.java +++ b/telephony/java/com/android/internal/telephony/RILConstants.java @@ -233,11 +233,14 @@ public interface RILConstants { /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */ int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33; + /** Default preferred network mode */ + int DEFAULT_PREFERRED_NETWORK_MODE = NETWORK_MODE_WCDMA_PREF; + @UnsupportedAppUsage int PREFERRED_NETWORK_MODE = Optional.of(TelephonyProperties.default_network()) .filter(list -> !list.isEmpty()) .map(list -> list.get(0)) - .orElse(NETWORK_MODE_WCDMA_PREF); + .orElse(DEFAULT_PREFERRED_NETWORK_MODE); int BAND_MODE_UNSPECIFIED = 0; //"unspecified" (selected by baseband automatically) int BAND_MODE_EURO = 1; //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000) From a6a485807996b55c1b68a9c937d818d23b160166 Mon Sep 17 00:00:00 2001 From: Jayachandran C Date: Wed, 5 Feb 2020 15:37:05 -0800 Subject: [PATCH 4/4] Make DEFAULT_PREFERRED_NETWORK_MODE @hide for now This API also needs to expose the possible values which would need more work hence we will drop this for now and re-work for next release This CL also fixes a bug to use correct RIL constant Bug: 148514283 Bug: 148484234 Test: Verified that the eSIM works on DSDS atest packages/services/Telephony/tests/ atest frameworks/opt/telephony/tests/telephonytests/ Change-Id: Ifd7b17cc2445c9cbe4c6ba688838a1b07eb13599 Merged-In: Ifd7b17cc2445c9cbe4c6ba688838a1b07eb13599 --- api/system-current.txt | 1 - telephony/java/android/telephony/TelephonyManager.java | 3 +-- .../java/com/android/internal/telephony/RILConstants.java | 5 +---- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/api/system-current.txt b/api/system-current.txt index 44fc4c238e81b..b187a783882ef 100755 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -9209,7 +9209,6 @@ package android.telephony { field public static final int CARRIER_PRIVILEGE_STATUS_HAS_ACCESS = 1; // 0x1 field public static final int CARRIER_PRIVILEGE_STATUS_NO_ACCESS = 0; // 0x0 field public static final int CARRIER_PRIVILEGE_STATUS_RULES_NOT_LOADED = -1; // 0xffffffff - field public static final int DEFAULT_PREFERRED_NETWORK_MODE = 0; // 0x0 field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION"; field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID"; field @Deprecated public static final String EXTRA_APN_PROTOCOL = "apnProto"; diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 0e08daf70c1d1..da161426a4a92 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -7640,9 +7640,8 @@ public class TelephonyManager { * * @hide */ - @SystemApi public static final int DEFAULT_PREFERRED_NETWORK_MODE = - RILConstants.DEFAULT_PREFERRED_NETWORK_MODE; + RILConstants.PREFERRED_NETWORK_MODE; /** * Get the preferred network type. diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java index 9a69022696f36..d524299d7ede0 100644 --- a/telephony/java/com/android/internal/telephony/RILConstants.java +++ b/telephony/java/com/android/internal/telephony/RILConstants.java @@ -233,14 +233,11 @@ public interface RILConstants { /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */ int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33; - /** Default preferred network mode */ - int DEFAULT_PREFERRED_NETWORK_MODE = NETWORK_MODE_WCDMA_PREF; - @UnsupportedAppUsage int PREFERRED_NETWORK_MODE = Optional.of(TelephonyProperties.default_network()) .filter(list -> !list.isEmpty()) .map(list -> list.get(0)) - .orElse(DEFAULT_PREFERRED_NETWORK_MODE); + .orElse(NETWORK_MODE_WCDMA_PREF); int BAND_MODE_UNSPECIFIED = 0; //"unspecified" (selected by baseband automatically) int BAND_MODE_EURO = 1; //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)