Merge "Use sysprop library for telephony props"

This commit is contained in:
Treehugger Robot
2019-12-20 02:00:38 +00:00
committed by Gerrit Code Review
7 changed files with 144 additions and 110 deletions

View File

@@ -25,8 +25,8 @@ import android.os.Looper;
import android.os.Process; import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.SystemProperties;
import android.os.UserHandle; import android.os.UserHandle;
import android.sysprop.TelephonyProperties;
import android.telecom.Log; import android.telecom.Log;
import android.telecom.PhoneAccount; import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle; import android.telecom.PhoneAccountHandle;
@@ -35,7 +35,6 @@ import android.text.TextUtils;
import com.android.internal.os.BaseCommand; import com.android.internal.os.BaseCommand;
import com.android.internal.telecom.ITelecomService; import com.android.internal.telecom.ITelecomService;
import com.android.internal.telephony.TelephonyProperties;
import java.io.PrintStream; import java.io.PrintStream;
@@ -363,7 +362,7 @@ public final class Telecom extends BaseCommand {
* "" (empty string) for a phone in SS mode * "" (empty string) for a phone in SS mode
*/ */
private void runGetSimConfig() throws RemoteException { private void runGetSimConfig() throws RemoteException {
System.out.println(SystemProperties.get(TelephonyProperties.PROPERTY_MULTI_SIM_CONFIG)); System.out.println(TelephonyProperties.multi_sim_config().orElse(""));
} }
private void runGetMaxPhones() throws RemoteException { private void runGetMaxPhones() throws RemoteException {

View File

@@ -26,17 +26,17 @@ import android.annotation.UnsupportedAppUsage;
import android.app.ActivityThread; import android.app.ActivityThread;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.sysprop.TelephonyProperties;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Slog; import android.util.Slog;
import android.view.View; import android.view.View;
import com.android.internal.telephony.TelephonyProperties;
import dalvik.system.VMRuntime; import dalvik.system.VMRuntime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* Information about the current build, extracted from system properties. * Information about the current build, extracted from system properties.
@@ -99,7 +99,8 @@ public class Build {
* {@link #getRadioVersion} instead. * {@link #getRadioVersion} instead.
*/ */
@Deprecated @Deprecated
public static final String RADIO = getString(TelephonyProperties.PROPERTY_BASEBAND_VERSION); public static final String RADIO = joinListOrElse(
TelephonyProperties.baseband_version(), UNKNOWN);
/** The name of the hardware (from the kernel command line or /proc). */ /** The name of the hardware (from the kernel command line or /proc). */
public static final String HARDWARE = getString("ro.hardware"); public static final String HARDWARE = getString("ro.hardware");
@@ -1088,7 +1089,8 @@ public class Build {
final String requiredBootloader = SystemProperties.get("ro.build.expect.bootloader"); final String requiredBootloader = SystemProperties.get("ro.build.expect.bootloader");
final String currentBootloader = SystemProperties.get("ro.bootloader"); final String currentBootloader = SystemProperties.get("ro.bootloader");
final String requiredRadio = SystemProperties.get("ro.build.expect.baseband"); final String requiredRadio = SystemProperties.get("ro.build.expect.baseband");
final String currentRadio = SystemProperties.get("gsm.version.baseband"); final String currentRadio = joinListOrElse(
TelephonyProperties.baseband_version(), "");
if (TextUtils.isEmpty(system)) { if (TextUtils.isEmpty(system)) {
Slog.e(TAG, "Required ro.system.build.fingerprint is empty!"); Slog.e(TAG, "Required ro.system.build.fingerprint is empty!");
@@ -1262,8 +1264,7 @@ public class Build {
* null (if, for instance, the radio is not currently on). * null (if, for instance, the radio is not currently on).
*/ */
public static String getRadioVersion() { public static String getRadioVersion() {
String propVal = SystemProperties.get(TelephonyProperties.PROPERTY_BASEBAND_VERSION); return joinListOrElse(TelephonyProperties.baseband_version(), null);
return TextUtils.isEmpty(propVal) ? null : propVal;
} }
@UnsupportedAppUsage @UnsupportedAppUsage
@@ -1288,4 +1289,10 @@ public class Build {
return -1; return -1;
} }
} }
private static <T> String joinListOrElse(List<T> list, String defaultValue) {
String ret = list.stream().map(elem -> elem == null ? "" : elem.toString())
.collect(Collectors.joining(","));
return ret.isEmpty() ? defaultValue : ret;
}
} }

View File

@@ -16,24 +16,6 @@
package com.android.server.policy; package com.android.server.policy;
import com.android.internal.app.AlertController;
import com.android.internal.globalactions.Action;
import com.android.internal.globalactions.ActionsAdapter;
import com.android.internal.globalactions.ActionsDialog;
import com.android.internal.globalactions.LongPressAction;
import com.android.internal.globalactions.SinglePressAction;
import com.android.internal.globalactions.ToggleAction;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.R;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.util.EmergencyAffordanceManager;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.policy.PowerAction;
import com.android.server.policy.RestartAction;
import com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@@ -57,6 +39,7 @@ import android.os.Vibrator;
import android.provider.Settings; import android.provider.Settings;
import android.service.dreams.DreamService; import android.service.dreams.DreamService;
import android.service.dreams.IDreamManager; import android.service.dreams.IDreamManager;
import android.sysprop.TelephonyProperties;
import android.telephony.PhoneStateListener; import android.telephony.PhoneStateListener;
import android.telephony.ServiceState; import android.telephony.ServiceState;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -69,6 +52,21 @@ import android.view.WindowManager;
import android.view.WindowManagerGlobal; import android.view.WindowManagerGlobal;
import android.widget.AdapterView; import android.widget.AdapterView;
import com.android.internal.R;
import com.android.internal.app.AlertController;
import com.android.internal.globalactions.Action;
import com.android.internal.globalactions.ActionsAdapter;
import com.android.internal.globalactions.ActionsDialog;
import com.android.internal.globalactions.LongPressAction;
import com.android.internal.globalactions.SinglePressAction;
import com.android.internal.globalactions.ToggleAction;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.EmergencyAffordanceManager;
import com.android.internal.widget.LockPatternUtils;
import com.android.server.policy.WindowManagerPolicy.WindowManagerFuncs;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -229,8 +227,7 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn
@Override @Override
public void onToggle(boolean on) { public void onToggle(boolean on) {
if (mHasTelephony && Boolean.parseBoolean( if (mHasTelephony && TelephonyProperties.in_ecm_mode().orElse(false)) {
SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) {
mIsWaitingForEcmExit = true; mIsWaitingForEcmExit = true;
// Launch ECM exit dialog // Launch ECM exit dialog
Intent ecmDialogIntent = Intent ecmDialogIntent =
@@ -247,8 +244,7 @@ class LegacyGlobalActions implements DialogInterface.OnDismissListener, DialogIn
if (!mHasTelephony) return; if (!mHasTelephony) return;
// In ECM mode airplane state cannot be changed // In ECM mode airplane state cannot be changed
if (!(Boolean.parseBoolean( if (!TelephonyProperties.in_ecm_mode().orElse(false)) {
SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE)))) {
mState = buttonOn ? State.TurningOn : State.TurningOff; mState = buttonOn ? State.TurningOn : State.TurningOff;
mAirplaneState = mState; mAirplaneState = mState;
} }

View File

@@ -16,8 +16,6 @@
package android.telephony; package android.telephony;
import static com.android.internal.telephony.TelephonyProperties.PROPERTY_OPERATOR_IDP_STRING;
import android.annotation.IntDef; import android.annotation.IntDef;
import android.annotation.NonNull; import android.annotation.NonNull;
import android.annotation.Nullable; import android.annotation.Nullable;
@@ -31,9 +29,9 @@ import android.database.Cursor;
import android.location.CountryDetector; import android.location.CountryDetector;
import android.net.Uri; import android.net.Uri;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import android.os.SystemProperties;
import android.provider.Contacts; import android.provider.Contacts;
import android.provider.ContactsContract; import android.provider.ContactsContract;
import android.sysprop.TelephonyProperties;
import android.telecom.PhoneAccount; import android.telecom.PhoneAccount;
import android.text.Editable; import android.text.Editable;
import android.text.Spannable; import android.text.Spannable;
@@ -2659,7 +2657,7 @@ public class PhoneNumberUtils {
ps = NANP_IDP_STRING; ps = NANP_IDP_STRING;
} else { } else {
// in case, there is no IDD is found, we shouldn't convert it. // in case, there is no IDD is found, we shouldn't convert it.
ps = SystemProperties.get(PROPERTY_OPERATOR_IDP_STRING, PLUS_SIGN_STRING); ps = TelephonyProperties.operator_idp_string().orElse(PLUS_SIGN_STRING);
} }
return ps; return ps;
} }

View File

@@ -62,6 +62,7 @@ import android.os.SystemProperties;
import android.os.WorkSource; import android.os.WorkSource;
import android.provider.Settings.SettingNotFoundException; import android.provider.Settings.SettingNotFoundException;
import android.service.carrier.CarrierIdentifier; import android.service.carrier.CarrierIdentifier;
import android.sysprop.TelephonyProperties;
import android.telecom.CallScreeningService; import android.telecom.CallScreeningService;
import android.telecom.InCallService; import android.telecom.InCallService;
import android.telecom.PhoneAccount; import android.telecom.PhoneAccount;
@@ -101,7 +102,6 @@ import com.android.internal.telephony.OperatorInfo;
import com.android.internal.telephony.PhoneConstants; import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.RILConstants; import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.SmsApplication; import com.android.internal.telephony.SmsApplication;
import com.android.internal.telephony.TelephonyProperties;
import dalvik.system.VMRuntime; import dalvik.system.VMRuntime;
@@ -390,7 +390,7 @@ public class TelephonyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
public MultiSimVariants getMultiSimConfiguration() { public MultiSimVariants getMultiSimConfiguration() {
String mSimConfig = String mSimConfig =
SystemProperties.get(TelephonyProperties.PROPERTY_MULTI_SIM_CONFIG); TelephonyProperties.multi_sim_config().orElse("");
if (mSimConfig.equals("dsds")) { if (mSimConfig.equals("dsds")) {
return MultiSimVariants.DSDS; return MultiSimVariants.DSDS;
} else if (mSimConfig.equals("dsda")) { } else if (mSimConfig.equals("dsda")) {
@@ -456,8 +456,7 @@ public class TelephonyManager {
* {@link #getActiveModemCount} returns 1 while this API returns 2. * {@link #getActiveModemCount} returns 1 while this API returns 2.
*/ */
public @ModemCount int getSupportedModemCount() { public @ModemCount int getSupportedModemCount() {
return SystemProperties.getInt(TelephonyProperties.PROPERTY_MAX_ACTIVE_MODEMS, return TelephonyProperties.max_active_modems().orElse(getActiveModemCount());
getActiveModemCount());
} }
/** /**
@@ -2084,12 +2083,10 @@ public class TelephonyManager {
/** {@hide} */ /** {@hide} */
@UnsupportedAppUsage @UnsupportedAppUsage
private int getPhoneTypeFromProperty(int phoneId) { private int getPhoneTypeFromProperty(int phoneId) {
String type = getTelephonyProperty(phoneId, Integer type = getTelephonyProperty(
TelephonyProperties.CURRENT_ACTIVE_PHONE, null); phoneId, TelephonyProperties.current_active_phone(), null);
if (type == null || type.isEmpty()) { if (type != null) return type;
return getPhoneTypeFromNetworkType(phoneId); return getPhoneTypeFromNetworkType(phoneId);
}
return Integer.parseInt(type);
} }
private int getPhoneTypeFromNetworkType() { private int getPhoneTypeFromNetworkType() {
@@ -2101,9 +2098,9 @@ public class TelephonyManager {
// When the system property CURRENT_ACTIVE_PHONE, has not been set, // When the system property CURRENT_ACTIVE_PHONE, has not been set,
// use the system property for default network type. // use the system property for default network type.
// This is a fail safe, and can only happen at first boot. // This is a fail safe, and can only happen at first boot.
String mode = getTelephonyProperty(phoneId, "ro.telephony.default_network", null); Integer mode = getTelephonyProperty(phoneId, TelephonyProperties.default_network(), null);
if (mode != null && !mode.isEmpty()) { if (mode != null) {
return TelephonyManager.getPhoneType(Integer.parseInt(mode)); return TelephonyManager.getPhoneType(mode);
} }
return TelephonyManager.PHONE_TYPE_NONE; return TelephonyManager.PHONE_TYPE_NONE;
} }
@@ -2207,7 +2204,7 @@ public class TelephonyManager {
/** The ProductType used for LTE on CDMA devices */ /** The ProductType used for LTE on CDMA devices */
private static final String sLteOnCdmaProductType = private static final String sLteOnCdmaProductType =
SystemProperties.get(TelephonyProperties.PROPERTY_LTE_ON_CDMA_PRODUCT_TYPE, ""); TelephonyProperties.lte_on_cdma_product_type().orElse("");
/** /**
* Return if the current radio is LTE on CDMA. This * Return if the current radio is LTE on CDMA. This
@@ -2225,8 +2222,8 @@ public class TelephonyManager {
int curVal; int curVal;
String productType = ""; String productType = "";
curVal = SystemProperties.getInt(TelephonyProperties.PROPERTY_LTE_ON_CDMA_DEVICE, curVal = TelephonyProperties.lte_on_cdma_device().orElse(
PhoneConstants.LTE_ON_CDMA_UNKNOWN); PhoneConstants.LTE_ON_CDMA_UNKNOWN);
retVal = curVal; retVal = curVal;
if (retVal == PhoneConstants.LTE_ON_CDMA_UNKNOWN) { if (retVal == PhoneConstants.LTE_ON_CDMA_UNKNOWN) {
Matcher matcher = sProductTypePattern.matcher(sKernelCmdLine); Matcher matcher = sProductTypePattern.matcher(sKernelCmdLine);
@@ -2278,7 +2275,7 @@ public class TelephonyManager {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public String getNetworkOperatorName(int subId) { public String getNetworkOperatorName(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = SubscriptionManager.getPhoneId(subId);
return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, ""); return getTelephonyProperty(phoneId, TelephonyProperties.operator_alpha(), "");
} }
/** /**
@@ -2322,7 +2319,7 @@ public class TelephonyManager {
**/ **/
@UnsupportedAppUsage @UnsupportedAppUsage
public String getNetworkOperatorForPhone(int phoneId) { public String getNetworkOperatorForPhone(int phoneId) {
return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, ""); return getTelephonyProperty(phoneId, TelephonyProperties.operator_numeric(), "");
} }
@@ -2386,8 +2383,7 @@ public class TelephonyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
public boolean isNetworkRoaming(int subId) { public boolean isNetworkRoaming(int subId) {
int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = SubscriptionManager.getPhoneId(subId);
return Boolean.parseBoolean(getTelephonyProperty(phoneId, return getTelephonyProperty(subId, TelephonyProperties.operator_is_roaming(), false);
TelephonyProperties.PROPERTY_OPERATOR_ISROAMING, null));
} }
/** /**
@@ -3344,8 +3340,7 @@ public class TelephonyManager {
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
public String getSimOperatorNumericForPhone(int phoneId) { public String getSimOperatorNumericForPhone(int phoneId) {
return getTelephonyProperty(phoneId, return getTelephonyProperty(phoneId, TelephonyProperties.icc_operator_numeric(), "");
TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "");
} }
/** /**
@@ -3382,8 +3377,7 @@ public class TelephonyManager {
*/ */
@UnsupportedAppUsage @UnsupportedAppUsage
public String getSimOperatorNameForPhone(int phoneId) { public String getSimOperatorNameForPhone(int phoneId) {
return getTelephonyProperty(phoneId, return getTelephonyProperty(phoneId, TelephonyProperties.icc_operator_alpha(), "");
TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, "");
} }
/** /**
@@ -3415,8 +3409,7 @@ public class TelephonyManager {
*/ */
@UnsupportedAppUsage @UnsupportedAppUsage
public String getSimCountryIsoForPhone(int phoneId) { public String getSimCountryIsoForPhone(int phoneId) {
return getTelephonyProperty(phoneId, return getTelephonyProperty(phoneId, TelephonyProperties.icc_operator_iso_country(), "");
TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, "");
} }
/** /**
@@ -6494,6 +6487,15 @@ public class TelephonyManager {
SystemProperties.set(property, value); SystemProperties.set(property, value);
} }
/**
* Inserts or updates a list property. Expands the list if its length is not enough.
*/
private static <T> List<T> updateTelephonyProperty(List<T> prop, int phoneId, T value) {
List<T> ret = new ArrayList<>(prop);
while (ret.size() <= phoneId) ret.add(null);
ret.set(phoneId, value);
return ret;
}
/** /**
* Convenience function for retrieving a value from the secure settings * Convenience function for retrieving a value from the secure settings
* value list as an integer. Note that internally setting values are * value list as an integer. Note that internally setting values are
@@ -6585,7 +6587,7 @@ public class TelephonyManager {
} }
/** /**
* Gets a per-phone telephony property. * Gets a per-phone telephony property from a property name.
* *
* @hide * @hide
*/ */
@@ -6602,6 +6604,15 @@ public class TelephonyManager {
return propVal == null ? defaultVal : propVal; return propVal == null ? defaultVal : propVal;
} }
/**
* Gets a typed per-phone telephony property from a schematized list property.
*/
private static <T> T getTelephonyProperty(int phoneId, List<T> prop, T defaultValue) {
T ret = null;
if (phoneId >= 0 && phoneId < prop.size()) ret = prop.get(phoneId);
return ret != null ? ret : defaultValue;
}
/** /**
* Gets a global telephony property. * Gets a global telephony property.
* *
@@ -8979,7 +8990,7 @@ public class TelephonyManager {
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC for the default phone. * Set TelephonyProperties.icc_operator_numeric for the default phone.
* *
* @hide * @hide
*/ */
@@ -8989,18 +9000,21 @@ public class TelephonyManager {
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC for the given phone. * Set TelephonyProperties.icc_operator_numeric for the given phone.
* *
* @hide * @hide
*/ */
@UnsupportedAppUsage @UnsupportedAppUsage
public void setSimOperatorNumericForPhone(int phoneId, String numeric) { public void setSimOperatorNumericForPhone(int phoneId, String numeric) {
setTelephonyProperty(phoneId, if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, numeric); List<String> newList = updateTelephonyProperty(
TelephonyProperties.icc_operator_numeric(), phoneId, numeric);
TelephonyProperties.icc_operator_numeric(newList);
}
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC for the default phone. * Set TelephonyProperties.icc_operator_alpha for the default phone.
* *
* @hide * @hide
*/ */
@@ -9010,18 +9024,21 @@ public class TelephonyManager {
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC for the given phone. * Set TelephonyProperties.icc_operator_alpha for the given phone.
* *
* @hide * @hide
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setSimOperatorNameForPhone(int phoneId, String name) { public void setSimOperatorNameForPhone(int phoneId, String name) {
setTelephonyProperty(phoneId, if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, name); List<String> newList = updateTelephonyProperty(
TelephonyProperties.icc_operator_alpha(), phoneId, name);
TelephonyProperties.icc_operator_alpha(newList);
}
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY for the default phone. * Set TelephonyProperties.icc_operator_iso_country for the default phone.
* *
* @hide * @hide
*/ */
@@ -9031,18 +9048,21 @@ public class TelephonyManager {
} }
/** /**
* Set TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY for the given phone. * Set TelephonyProperties.icc_operator_iso_country for the given phone.
* *
* @hide * @hide
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setSimCountryIsoForPhone(int phoneId, String iso) { public void setSimCountryIsoForPhone(int phoneId, String iso) {
setTelephonyProperty(phoneId, if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, iso); List<String> newList = updateTelephonyProperty(
TelephonyProperties.icc_operator_iso_country(), phoneId, iso);
TelephonyProperties.icc_operator_iso_country(newList);
}
} }
/** /**
* Set TelephonyProperties.PROPERTY_SIM_STATE for the default phone. * Set TelephonyProperties.sim_state for the default phone.
* *
* @hide * @hide
*/ */
@@ -9052,14 +9072,17 @@ public class TelephonyManager {
} }
/** /**
* Set TelephonyProperties.PROPERTY_SIM_STATE for the given phone. * Set TelephonyProperties.sim_state for the given phone.
* *
* @hide * @hide
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setSimStateForPhone(int phoneId, String state) { public void setSimStateForPhone(int phoneId, String state) {
setTelephonyProperty(phoneId, if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyProperties.PROPERTY_SIM_STATE, state); List<String> newList = updateTelephonyProperty(
TelephonyProperties.sim_state(), phoneId, state);
TelephonyProperties.sim_state(newList);
}
} }
/** /**
@@ -9164,7 +9187,11 @@ public class TelephonyManager {
*/ */
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setBasebandVersionForPhone(int phoneId, String version) { public void setBasebandVersionForPhone(int phoneId, String version) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_BASEBAND_VERSION, version); if (SubscriptionManager.isValidPhoneId(phoneId)) {
List<String> newList = updateTelephonyProperty(
TelephonyProperties.baseband_version(), phoneId, version);
TelephonyProperties.baseband_version(newList);
}
} }
/** /**
@@ -9187,8 +9214,8 @@ public class TelephonyManager {
*/ */
private String getBasebandVersionLegacy(int phoneId) { private String getBasebandVersionLegacy(int phoneId) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
String prop = TelephonyProperties.PROPERTY_BASEBAND_VERSION + String prop = "gsm.version.baseband"
((phoneId == 0) ? "" : Integer.toString(phoneId)); + ((phoneId == 0) ? "" : Integer.toString(phoneId));
return SystemProperties.get(prop); return SystemProperties.get(prop);
} }
return null; return null;
@@ -9205,7 +9232,7 @@ public class TelephonyManager {
if (version != null && !version.isEmpty()) { if (version != null && !version.isEmpty()) {
setBasebandVersionForPhone(phoneId, version); setBasebandVersionForPhone(phoneId, version);
} }
return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_BASEBAND_VERSION, ""); return getTelephonyProperty(phoneId, TelephonyProperties.baseband_version(), "");
} }
/** /**
@@ -9231,8 +9258,9 @@ public class TelephonyManager {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public void setPhoneType(int phoneId, int type) { public void setPhoneType(int phoneId, int type) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
TelephonyManager.setTelephonyProperty(phoneId, List<Integer> newList = updateTelephonyProperty(
TelephonyProperties.CURRENT_ACTIVE_PHONE, String.valueOf(type)); TelephonyProperties.current_active_phone(), phoneId, type);
TelephonyProperties.current_active_phone(newList);
} }
} }
@@ -9261,8 +9289,8 @@ public class TelephonyManager {
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
public String getOtaSpNumberSchemaForPhone(int phoneId, String defaultValue) { public String getOtaSpNumberSchemaForPhone(int phoneId, String defaultValue) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
return TelephonyManager.getTelephonyProperty(phoneId, return getTelephonyProperty(
TelephonyProperties.PROPERTY_OTASP_NUM_SCHEMA, defaultValue); phoneId, TelephonyProperties.otasp_num_schema(), defaultValue);
} }
return defaultValue; return defaultValue;
@@ -9292,8 +9320,7 @@ public class TelephonyManager {
*/ */
public boolean getSmsReceiveCapableForPhone(int phoneId, boolean defaultValue) { public boolean getSmsReceiveCapableForPhone(int phoneId, boolean defaultValue) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
return Boolean.parseBoolean(TelephonyManager.getTelephonyProperty(phoneId, return getTelephonyProperty(phoneId, TelephonyProperties.sms_receive(), defaultValue);
TelephonyProperties.PROPERTY_SMS_RECEIVE, String.valueOf(defaultValue)));
} }
return defaultValue; return defaultValue;
@@ -9323,8 +9350,7 @@ public class TelephonyManager {
*/ */
public boolean getSmsSendCapableForPhone(int phoneId, boolean defaultValue) { public boolean getSmsSendCapableForPhone(int phoneId, boolean defaultValue) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
return Boolean.parseBoolean(TelephonyManager.getTelephonyProperty(phoneId, return getTelephonyProperty(phoneId, TelephonyProperties.sms_send(), defaultValue);
TelephonyProperties.PROPERTY_SMS_SEND, String.valueOf(defaultValue)));
} }
return defaultValue; return defaultValue;
@@ -9364,7 +9390,9 @@ public class TelephonyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
public void setNetworkOperatorNameForPhone(int phoneId, String name) { public void setNetworkOperatorNameForPhone(int phoneId, String name) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, name); List<String> newList = updateTelephonyProperty(
TelephonyProperties.operator_alpha(), phoneId, name);
TelephonyProperties.operator_alpha(newList);
} }
} }
@@ -9386,7 +9414,11 @@ public class TelephonyManager {
*/ */
@UnsupportedAppUsage @UnsupportedAppUsage
public void setNetworkOperatorNumericForPhone(int phoneId, String numeric) { public void setNetworkOperatorNumericForPhone(int phoneId, String numeric) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, numeric); if (SubscriptionManager.isValidPhoneId(phoneId)) {
List<String> newList = updateTelephonyProperty(
TelephonyProperties.operator_numeric(), phoneId, numeric);
TelephonyProperties.operator_numeric(newList);
}
} }
/** /**
@@ -9408,8 +9440,9 @@ public class TelephonyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
public void setNetworkRoamingForPhone(int phoneId, boolean isRoaming) { public void setNetworkRoamingForPhone(int phoneId, boolean isRoaming) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ISROAMING, List<Boolean> newList = updateTelephonyProperty(
isRoaming ? "true" : "false"); TelephonyProperties.operator_is_roaming(), phoneId, isRoaming);
TelephonyProperties.operator_is_roaming(newList);
} }
} }
@@ -9436,9 +9469,10 @@ public class TelephonyManager {
@UnsupportedAppUsage @UnsupportedAppUsage
public void setDataNetworkTypeForPhone(int phoneId, int type) { public void setDataNetworkTypeForPhone(int phoneId, int type) {
if (SubscriptionManager.isValidPhoneId(phoneId)) { if (SubscriptionManager.isValidPhoneId(phoneId)) {
setTelephonyProperty(phoneId, List<String> newList = updateTelephonyProperty(
TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, TelephonyProperties.data_network_type(), phoneId,
ServiceState.rilRadioTechnologyToString(type)); ServiceState.rilRadioTechnologyToString(type));
TelephonyProperties.data_network_type(newList);
} }
} }

View File

@@ -16,10 +16,12 @@
package com.android.internal.telephony; package com.android.internal.telephony;
import android.telephony.TelephonyManager; import android.sysprop.TelephonyProperties;
import dalvik.annotation.compat.UnsupportedAppUsage; import dalvik.annotation.compat.UnsupportedAppUsage;
import java.util.Optional;
/** /**
* {@hide} * {@hide}
*/ */
@@ -233,8 +235,10 @@ public interface RILConstants {
int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33; int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;
@UnsupportedAppUsage @UnsupportedAppUsage
int PREFERRED_NETWORK_MODE = Integer.parseInt(TelephonyManager.getTelephonyProperty(0, int PREFERRED_NETWORK_MODE = Optional.of(TelephonyProperties.default_network())
"ro.telephony.default_network", Integer.toString(NETWORK_MODE_WCDMA_PREF))); .filter(list -> !list.isEmpty())
.map(list -> list.get(0))
.orElse(NETWORK_MODE_WCDMA_PREF);
int BAND_MODE_UNSPECIFIED = 0; //"unspecified" (selected by baseband automatically) int BAND_MODE_UNSPECIFIED = 0; //"unspecified" (selected by baseband automatically)
int BAND_MODE_EURO = 1; //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000) int BAND_MODE_EURO = 1; //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)

View File

@@ -16,10 +16,8 @@
package com.android.internal.telephony.cdma; package com.android.internal.telephony.cdma;
import static com.android.internal.telephony.TelephonyProperties.PROPERTY_OPERATOR_IDP_STRING;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.SystemProperties; import android.sysprop.TelephonyProperties;
import android.telephony.PhoneNumberUtils; import android.telephony.PhoneNumberUtils;
import android.telephony.Rlog; import android.telephony.Rlog;
import android.telephony.SmsCbLocation; import android.telephony.SmsCbLocation;
@@ -34,7 +32,6 @@ import com.android.internal.telephony.SmsAddress;
import com.android.internal.telephony.SmsConstants; import com.android.internal.telephony.SmsConstants;
import com.android.internal.telephony.SmsHeader; import com.android.internal.telephony.SmsHeader;
import com.android.internal.telephony.SmsMessageBase; import com.android.internal.telephony.SmsMessageBase;
import com.android.internal.telephony.TelephonyProperties;
import com.android.internal.telephony.cdma.sms.BearerData; import com.android.internal.telephony.cdma.sms.BearerData;
import com.android.internal.telephony.cdma.sms.CdmaSmsAddress; import com.android.internal.telephony.cdma.sms.CdmaSmsAddress;
import com.android.internal.telephony.cdma.sms.CdmaSmsSubaddress; import com.android.internal.telephony.cdma.sms.CdmaSmsSubaddress;
@@ -862,7 +859,7 @@ public class SmsMessage extends SmsMessageBase {
// TODO: Skip it for EF SMS(SUBMIT and DELIVER) because the IDD depends on current network? // TODO: Skip it for EF SMS(SUBMIT and DELIVER) because the IDD depends on current network?
// 2) Adds the '+' prefix if TON is International // 2) Adds the '+' prefix if TON is International
// 3) Keeps the '+' if address starts with the '+' // 3) Keeps the '+' if address starts with the '+'
String idd = SystemProperties.get(PROPERTY_OPERATOR_IDP_STRING, null); String idd = TelephonyProperties.operator_idp_string().orElse(null);
addr.address = new String(addr.origBytes); addr.address = new String(addr.origBytes);
if (!TextUtils.isEmpty(idd) && addr.address.startsWith(idd)) { if (!TextUtils.isEmpty(idd) && addr.address.startsWith(idd)) {
addr.address = "+" + addr.address.substring(idd.length()); addr.address = "+" + addr.address.substring(idd.length());
@@ -940,14 +937,13 @@ public class SmsMessage extends SmsMessageBase {
// msgId==0 is (sometimes?) treated specially by lower levels. // msgId==0 is (sometimes?) treated specially by lower levels.
// Specifically, the ID is not preserved for delivery ACKs. // Specifically, the ID is not preserved for delivery ACKs.
// Hence, avoid 0 -- constraining the range to 1..65535. // Hence, avoid 0 -- constraining the range to 1..65535.
int msgId = SystemProperties.getInt(TelephonyProperties.PROPERTY_CDMA_MSG_ID, 1); int msgId = TelephonyProperties.cdma_msg_id().orElse(1);
String nextMsgId = Integer.toString((msgId % 0xFFFF) + 1); int nextMsgId = msgId % 0xFFFF + 1;
try{ try{
SystemProperties.set(TelephonyProperties.PROPERTY_CDMA_MSG_ID, nextMsgId); TelephonyProperties.cdma_msg_id(nextMsgId);
if (Rlog.isLoggable(LOGGABLE_TAG, Log.VERBOSE)) { if (Rlog.isLoggable(LOGGABLE_TAG, Log.VERBOSE)) {
Rlog.d(LOG_TAG, "next " + TelephonyProperties.PROPERTY_CDMA_MSG_ID + " = " + nextMsgId); Rlog.d(LOG_TAG, "next persist.radio.cdma.msgid = " + nextMsgId);
Rlog.d(LOG_TAG, "readback gets " + Rlog.d(LOG_TAG, "readback gets " + TelephonyProperties.cdma_msg_id().orElse(1));
SystemProperties.get(TelephonyProperties.PROPERTY_CDMA_MSG_ID));
} }
} catch(RuntimeException ex) { } catch(RuntimeException ex) {
Rlog.e(LOG_TAG, "set nextMessage ID failed: " + ex); Rlog.e(LOG_TAG, "set nextMessage ID failed: " + ex);