CarrierConfig: get configs by prefix

am: 1c446a22d4

Change-Id: Ia39370cb55a8418f5ce600bf4e58a62a985a53ce
This commit is contained in:
Dheeraj Shetty
2019-07-31 21:57:26 -07:00
committed by android-build-merger
2 changed files with 94 additions and 0 deletions

View File

@@ -43969,6 +43969,7 @@ package android.telephony {
public class CarrierConfigManager {
method @Nullable public android.os.PersistableBundle getConfig();
method @Nullable public android.os.PersistableBundle getConfigByComponentForSubId(String, int);
method @Nullable public android.os.PersistableBundle getConfigForSubId(int);
method public static boolean isConfigForIdentifiedCarrier(android.os.PersistableBundle);
method public void notifyConfigChangedForSubId(int);
@@ -44146,6 +44147,10 @@ package android.telephony {
field public static final String KEY_WORLD_PHONE_BOOL = "world_phone_bool";
}
public static final class CarrierConfigManager.Ims {
field public static final String KEY_PREFIX = "ims.";
}
public abstract class CellIdentity implements android.os.Parcelable {
method public int describeContents();
method @Nullable public CharSequence getOperatorAlphaLong();

View File

@@ -3016,6 +3016,23 @@ public class CarrierConfigManager {
public static final String KEY_IS_OPPORTUNISTIC_SUBSCRIPTION_BOOL =
"is_opportunistic_subscription_bool";
/**
* Configs used by the IMS stack.
*/
public static final class Ims {
/** Prefix of all Ims.KEY_* constants. */
public static final String KEY_PREFIX = "ims.";
//TODO: Add configs related to IMS.
private Ims() {}
private static PersistableBundle getDefaults() {
PersistableBundle defaults = new PersistableBundle();
return defaults;
}
}
/**
* A list of 4 GSM RSSI thresholds above which a signal level is considered POOR,
* MODERATE, GOOD, or EXCELLENT, to be used in SignalStrength reporting.
@@ -3447,6 +3464,7 @@ public class CarrierConfigManager {
-89, /* SIGNAL_STRENGTH_GREAT */
});
sDefaults.putBoolean(KEY_SUPPORT_WPS_OVER_IMS_BOOL, true);
sDefaults.putAll(Ims.getDefaults());
}
/**
@@ -3643,4 +3661,75 @@ public class CarrierConfigManager {
return ICarrierConfigLoader.Stub
.asInterface(ServiceManager.getService(Context.CARRIER_CONFIG_SERVICE));
}
/**
* Gets the configuration values for a component using its prefix.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*
* @param prefix prefix of the component.
* @param subId the subscription ID, normally obtained from {@link SubscriptionManager}.
*
* @see #getConfigForSubId
*/
@Nullable
public PersistableBundle getConfigByComponentForSubId(String prefix, int subId) {
PersistableBundle configs = getConfigForSubId(subId);
if (configs == null) {
return null;
}
PersistableBundle ret = new PersistableBundle();
for (String configKey : configs.keySet()) {
if (configKey.startsWith(prefix)) {
addConfig(configKey, configs.get(configKey), ret);
}
}
return ret;
}
private void addConfig(String key, Object value, PersistableBundle configs) {
if (value instanceof String) {
configs.putString(key, (String) value);
}
if (value instanceof String[]) {
configs.putStringArray(key, (String[]) value);
}
if (value instanceof Integer) {
configs.putInt(key, (Integer) value);
}
if (value instanceof Long) {
configs.putLong(key, (Long) value);
}
if (value instanceof Double) {
configs.putDouble(key, (Double) value);
}
if (value instanceof Boolean) {
configs.putBoolean(key, (Boolean) value);
}
if (value instanceof int[]) {
configs.putIntArray(key, (int[]) value);
}
if (value instanceof double[]) {
configs.putDoubleArray(key, (double[]) value);
}
if (value instanceof boolean[]) {
configs.putBooleanArray(key, (boolean[]) value);
}
if (value instanceof long[]) {
configs.putLongArray(key, (long[]) value);
}
}
}