Merge changes from topics "118348832", "120945564"
am: 52a31598e7
Change-Id: Ib236b90d107ec7fa40c32c9604af95f58b844e05
This commit is contained in:
@@ -6252,10 +6252,13 @@ package android.telephony {
|
||||
|
||||
public class SubscriptionManager {
|
||||
method public java.util.List<android.telephony.SubscriptionInfo> getAvailableSubscriptionInfoList();
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getEnabledSubscriptionId(int);
|
||||
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isSubscriptionEnabled(int);
|
||||
method public void requestEmbeddedSubscriptionInfoListRefresh();
|
||||
method public void requestEmbeddedSubscriptionInfoListRefresh(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultDataSubId(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setDefaultSmsSubId(int);
|
||||
method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean setSubscriptionEnabled(int, boolean);
|
||||
field public static final android.net.Uri ADVANCED_CALLING_ENABLED_CONTENT_URI;
|
||||
field public static final int PROFILE_CLASS_DEFAULT = -1; // 0xffffffff
|
||||
field public static final int PROFILE_CLASS_OPERATIONAL = 2; // 0x2
|
||||
|
||||
@@ -12861,6 +12861,19 @@ public final class Settings {
|
||||
public static final String[] MULTI_SIM_USER_PREFERRED_SUBS = {"user_preferred_sub1",
|
||||
"user_preferred_sub2","user_preferred_sub3"};
|
||||
|
||||
/**
|
||||
* Which subscription is enabled for a physical slot.
|
||||
* @hide
|
||||
*/
|
||||
public static final String ENABLED_SUBSCRIPTION_FOR_SLOT = "enabled_subscription_for_slot";
|
||||
|
||||
/**
|
||||
* Whether corresponding logical modem is enabled for a physical slot.
|
||||
* The value 1 - enable, 0 - disable
|
||||
* @hide
|
||||
*/
|
||||
public static final String MODEM_STACK_ENABLED_FOR_SLOT = "modem_stack_enabled_for_slot";
|
||||
|
||||
/**
|
||||
* Whether to enable new contacts aggregator or not.
|
||||
* The value 1 - enable, 0 - disable
|
||||
|
||||
@@ -505,7 +505,9 @@ public class SettingsBackupTest {
|
||||
Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION,
|
||||
Settings.Global.CHAINED_BATTERY_ATTRIBUTION_ENABLED,
|
||||
Settings.Global.HIDDEN_API_BLACKLIST_EXEMPTIONS,
|
||||
Settings.Global.BACKUP_AGENT_TIMEOUT_PARAMETERS);
|
||||
Settings.Global.BACKUP_AGENT_TIMEOUT_PARAMETERS,
|
||||
Settings.Global.ENABLED_SUBSCRIPTION_FOR_SLOT,
|
||||
Settings.Global.MODEM_STACK_ENABLED_FOR_SLOT);
|
||||
private static final Set<String> BACKUP_BLACKLISTED_SECURE_SETTINGS =
|
||||
newHashSet(
|
||||
Settings.Secure.ACCESSIBILITY_SOFT_KEYBOARD_MODE,
|
||||
|
||||
@@ -33,15 +33,17 @@ public class PhoneCapability implements Parcelable {
|
||||
public final int maxActiveVoiceCalls;
|
||||
public final int maxActiveData;
|
||||
public final int max5G;
|
||||
public final boolean validationBeforeSwitchSupported;
|
||||
public final List<ModemInfo> logicalModemList;
|
||||
|
||||
public PhoneCapability(int maxActiveVoiceCalls, int maxActiveData, int max5G,
|
||||
List<ModemInfo> logicalModemList) {
|
||||
List<ModemInfo> logicalModemList, boolean validationBeforeSwitchSupported) {
|
||||
this.maxActiveVoiceCalls = maxActiveVoiceCalls;
|
||||
this.maxActiveData = maxActiveData;
|
||||
this.max5G = max5G;
|
||||
// Make sure it's not null.
|
||||
this.logicalModemList = logicalModemList == null ? new ArrayList<>() : logicalModemList;
|
||||
this.validationBeforeSwitchSupported = validationBeforeSwitchSupported;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -55,13 +57,15 @@ public class PhoneCapability implements Parcelable {
|
||||
maxActiveVoiceCalls = in.readInt();
|
||||
maxActiveData = in.readInt();
|
||||
max5G = in.readInt();
|
||||
validationBeforeSwitchSupported = in.readBoolean();
|
||||
logicalModemList = new ArrayList<>();
|
||||
in.readList(logicalModemList, ModemInfo.class.getClassLoader());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList);
|
||||
return Objects.hash(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList,
|
||||
validationBeforeSwitchSupported);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -79,6 +83,7 @@ public class PhoneCapability implements Parcelable {
|
||||
return (maxActiveVoiceCalls == s.maxActiveVoiceCalls
|
||||
&& maxActiveData == s.maxActiveData
|
||||
&& max5G == s.max5G
|
||||
&& validationBeforeSwitchSupported == s.validationBeforeSwitchSupported
|
||||
&& logicalModemList.equals(s.logicalModemList));
|
||||
}
|
||||
|
||||
@@ -96,6 +101,7 @@ public class PhoneCapability implements Parcelable {
|
||||
dest.writeInt(maxActiveVoiceCalls);
|
||||
dest.writeInt(maxActiveData);
|
||||
dest.writeInt(max5G);
|
||||
dest.writeBoolean(validationBeforeSwitchSupported);
|
||||
dest.writeList(logicalModemList);
|
||||
}
|
||||
|
||||
|
||||
@@ -2862,6 +2862,95 @@ public class SubscriptionManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enabled or disable a subscription. This is currently used in the settings page.
|
||||
*
|
||||
* <p>
|
||||
* Permissions android.Manifest.permission.MODIFY_PHONE_STATE is required
|
||||
*
|
||||
* @param enable whether user is turning it on or off.
|
||||
* @param subscriptionId Subscription to be enabled or disabled.
|
||||
* It could be a eSIM or pSIM subscription.
|
||||
*
|
||||
* @return whether the operation is successful.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
public boolean setSubscriptionEnabled(int subscriptionId, boolean enable) {
|
||||
if (VDBG) {
|
||||
logd("setSubscriptionActivated subId= " + subscriptionId + " enable " + enable);
|
||||
}
|
||||
try {
|
||||
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
|
||||
if (iSub != null) {
|
||||
return iSub.setSubscriptionEnabled(enable, subscriptionId);
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
// ignore it
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the subscription is enabled or not. This is different from activated
|
||||
* or deactivated for two aspects. 1) For when user disables a physical subscription, we
|
||||
* actually disable the modem because we can't switch off the subscription. 2) For eSIM,
|
||||
* user may enable one subscription but the system may activate another temporarily. In this
|
||||
* case, user enabled one is different from current active one.
|
||||
|
||||
* @param subscriptionId The subscription it asks about.
|
||||
* @return whether it's enabled or not. {@code true} if user set this subscription enabled
|
||||
* earlier, or user never set subscription enable / disable on this slot explicitly, and
|
||||
* this subscription is currently active. Otherwise, it returns {@code false}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
|
||||
public boolean isSubscriptionEnabled(int subscriptionId) {
|
||||
try {
|
||||
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
|
||||
if (iSub != null) {
|
||||
return iSub.isSubscriptionEnabled(subscriptionId);
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
// ignore it
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get which subscription is enabled on this slot. See {@link #isSubscriptionEnabled(int)}
|
||||
* for more details.
|
||||
*
|
||||
* @param slotIndex which slot it asks about.
|
||||
* @return which subscription is enabled on this slot. If there's no enabled subscription
|
||||
* in this slot, it will return {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
@RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
|
||||
public int getEnabledSubscriptionId(int slotIndex) {
|
||||
int subId = INVALID_SUBSCRIPTION_ID;
|
||||
|
||||
try {
|
||||
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
|
||||
if (iSub != null) {
|
||||
subId = iSub.getEnabledSubscriptionId(slotIndex);
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
// ignore it
|
||||
}
|
||||
|
||||
if (VDBG) logd("getEnabledSubscriptionId, subId = " + subId);
|
||||
return subId;
|
||||
}
|
||||
|
||||
private interface CallISubMethodHelper {
|
||||
int callMethod(ISub iSub) throws RemoteException;
|
||||
}
|
||||
|
||||
@@ -276,6 +276,11 @@ interface ISub {
|
||||
|
||||
String getSubscriptionProperty(int subId, String propKey, String callingPackage);
|
||||
|
||||
boolean setSubscriptionEnabled(boolean enable, int subId);
|
||||
|
||||
boolean isSubscriptionEnabled(int subId);
|
||||
|
||||
int getEnabledSubscriptionId(int slotIndex);
|
||||
/**
|
||||
* Get the SIM state for the slot index
|
||||
* @return SIM state as the ordinal of IccCardConstants.State
|
||||
|
||||
Reference in New Issue
Block a user