Merge "Remove parentSubId and define API to set groupSubId" am: d413b5c713
am: e1015e70c4
Change-Id: I4ed0c97ac3961da37397ba1bd0ea24535a6764b8
This commit is contained in:
@@ -42811,6 +42811,7 @@ package android.telephony {
|
||||
method public java.lang.String getCountryIso();
|
||||
method public int getDataRoaming();
|
||||
method public java.lang.CharSequence getDisplayName();
|
||||
method public java.lang.String getGroupUuid();
|
||||
method public java.lang.String getIccId();
|
||||
method public int getIconTint();
|
||||
method public deprecated int getMcc();
|
||||
@@ -42818,7 +42819,6 @@ package android.telephony {
|
||||
method public deprecated int getMnc();
|
||||
method public java.lang.String getMncString();
|
||||
method public java.lang.String getNumber();
|
||||
method public int getParentSubId();
|
||||
method public int getSimSlotIndex();
|
||||
method public int getSubscriptionId();
|
||||
method public boolean isEmbedded();
|
||||
@@ -42852,6 +42852,7 @@ package android.telephony {
|
||||
method public static boolean isValidSubscriptionId(int);
|
||||
method public void removeOnOpportunisticSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
|
||||
method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
|
||||
method public java.lang.String setSubscriptionGroup(int[]);
|
||||
method public void setSubscriptionOverrideCongested(int, boolean, long);
|
||||
method public void setSubscriptionOverrideUnmetered(int, boolean, long);
|
||||
method public void setSubscriptionPlans(int, java.util.List<android.telephony.SubscriptionPlan>);
|
||||
|
||||
@@ -143,9 +143,11 @@ public class SubscriptionInfo implements Parcelable {
|
||||
private boolean mIsOpportunistic;
|
||||
|
||||
/**
|
||||
* SubId of the parent subscription, if there is one.
|
||||
* A UUID assigned to the subscription group. It returns
|
||||
* null if not assigned.
|
||||
*/
|
||||
private int mParentSubId;
|
||||
@Nullable
|
||||
private String mGroupUUID;
|
||||
|
||||
/**
|
||||
* @hide
|
||||
@@ -156,7 +158,7 @@ public class SubscriptionInfo implements Parcelable {
|
||||
@Nullable UiccAccessRule[] accessRules, String cardId) {
|
||||
this(id, iccId, simSlotIndex, displayName, carrierName, nameSource, iconTint, number,
|
||||
roaming, icon, mcc, mnc, countryIso, isEmbedded, accessRules, cardId,
|
||||
false, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
|
||||
false, null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -166,7 +168,7 @@ public class SubscriptionInfo implements Parcelable {
|
||||
CharSequence carrierName, int nameSource, int iconTint, String number, int roaming,
|
||||
Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded,
|
||||
@Nullable UiccAccessRule[] accessRules, String cardId, boolean isOpportunistic,
|
||||
int parentSubId) {
|
||||
@Nullable String groupUUID) {
|
||||
this.mId = id;
|
||||
this.mIccId = iccId;
|
||||
this.mSimSlotIndex = simSlotIndex;
|
||||
@@ -184,7 +186,7 @@ public class SubscriptionInfo implements Parcelable {
|
||||
this.mAccessRules = accessRules;
|
||||
this.mCardId = cardId;
|
||||
this.mIsOpportunistic = isOpportunistic;
|
||||
this.mParentSubId = parentSubId;
|
||||
this.mGroupUUID = groupUUID;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -388,16 +390,16 @@ public class SubscriptionInfo implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Used in scenarios where a child subscription is bundled with a primary parent subscription.
|
||||
* The child subscription will typically be opportunistic (see {@link #isOpportunistic()})
|
||||
* and will be used to provide data services where available, with the parent being the primary
|
||||
* fallback subscription.
|
||||
* Used in scenarios where different subscriptions are bundled as a group.
|
||||
* It's typically a primary and an opportunistic subscription. (see {@link #isOpportunistic()})
|
||||
* Such that those subscriptions will have some affiliated behaviors such as opportunistic
|
||||
* subscription may be invisible to the user.
|
||||
*
|
||||
* @return subId of parent subscription if it’s bundled with a primary subscription.
|
||||
* If there isn't one, {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}
|
||||
* @return group UUID a String of group UUID if it belongs to a group. Otherwise
|
||||
* it will return null.
|
||||
*/
|
||||
public int getParentSubId() {
|
||||
return mParentSubId;
|
||||
public String getGroupUuid() {
|
||||
return mGroupUUID;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -493,11 +495,11 @@ public class SubscriptionInfo implements Parcelable {
|
||||
UiccAccessRule[] accessRules = source.createTypedArray(UiccAccessRule.CREATOR);
|
||||
String cardId = source.readString();
|
||||
boolean isOpportunistic = source.readBoolean();
|
||||
int parentSubId = source.readInt();
|
||||
String groupUUID = source.readString();
|
||||
|
||||
return new SubscriptionInfo(id, iccId, simSlotIndex, displayName, carrierName,
|
||||
nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso,
|
||||
isEmbedded, accessRules, cardId, isOpportunistic, parentSubId);
|
||||
isEmbedded, accessRules, cardId, isOpportunistic, groupUUID);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -525,7 +527,7 @@ public class SubscriptionInfo implements Parcelable {
|
||||
dest.writeTypedArray(mAccessRules, flags);
|
||||
dest.writeString(mCardId);
|
||||
dest.writeBoolean(mIsOpportunistic);
|
||||
dest.writeInt(mParentSubId);
|
||||
dest.writeString(mGroupUUID);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -559,13 +561,13 @@ public class SubscriptionInfo implements Parcelable {
|
||||
+ " mnc " + mMnc + "mCountryIso=" + mCountryIso + " isEmbedded " + mIsEmbedded
|
||||
+ " accessRules " + Arrays.toString(mAccessRules)
|
||||
+ " cardId=" + cardIdToPrint + " isOpportunistic " + mIsOpportunistic
|
||||
+ " parentSubId=" + mParentSubId + "}";
|
||||
+ " mGroupUUID=" + mGroupUUID + "}";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return Objects.hash(mId, mSimSlotIndex, mNameSource, mIconTint, mDataRoaming, mIsEmbedded,
|
||||
mIsOpportunistic, mParentSubId, mIccId, mNumber, mMcc, mMnc, mCountryIso,
|
||||
mIsOpportunistic, mGroupUUID, mIccId, mNumber, mMcc, mMnc, mCountryIso,
|
||||
mCardId, mDisplayName, mCarrierName, mAccessRules);
|
||||
}
|
||||
|
||||
@@ -588,7 +590,7 @@ public class SubscriptionInfo implements Parcelable {
|
||||
&& mDataRoaming == toCompare.mDataRoaming
|
||||
&& mIsEmbedded == toCompare.mIsEmbedded
|
||||
&& mIsOpportunistic == toCompare.mIsOpportunistic
|
||||
&& mParentSubId == toCompare.mParentSubId
|
||||
&& Objects.equals(mGroupUUID, toCompare.mGroupUUID)
|
||||
&& Objects.equals(mIccId, toCompare.mIccId)
|
||||
&& Objects.equals(mNumber, toCompare.mNumber)
|
||||
&& Objects.equals(mMcc, toCompare.mMcc)
|
||||
|
||||
@@ -118,7 +118,6 @@ public class SubscriptionManager {
|
||||
@UnsupportedAppUsage
|
||||
public static final Uri CONTENT_URI = Uri.parse("content://telephony/siminfo");
|
||||
|
||||
|
||||
/**
|
||||
* Generates a content {@link Uri} used to receive updates on simInfo change
|
||||
* on the given subscriptionId
|
||||
@@ -575,6 +574,15 @@ public class SubscriptionManager {
|
||||
*/
|
||||
public static final String PARENT_SUB_ID = "parent_sub_id";
|
||||
|
||||
/**
|
||||
* TelephonyProvider column name for group ID. Subscriptions with same group ID
|
||||
* are considered bundled together, and should behave as a single subscription at
|
||||
* certain scenarios.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public static final String GROUP_UUID = "group_uuid";
|
||||
|
||||
/**
|
||||
* Broadcast Action: The user has changed one of the default subs related to
|
||||
* data, phone calls, or sms</p>
|
||||
@@ -2355,19 +2363,40 @@ public class SubscriptionManager {
|
||||
}
|
||||
|
||||
/**
|
||||
* Set parent subId by simInfo index
|
||||
* Inform SubscriptionManager that subscriptions in the list are bundled
|
||||
* as a group. Typically it's a primary subscription and an opportunistic
|
||||
* subscription. It should only affect multi-SIM scenarios where primary
|
||||
* and opportunistic subscriptions can be activated together.
|
||||
* Being in the same group means they might be activated or deactivated
|
||||
* together, some of them may be invisible to the users, etc.
|
||||
*
|
||||
* @param parentSubId subId of its parent subscription.
|
||||
* @param subId the unique SubscriptionInfo index in database
|
||||
* @return the number of records updated
|
||||
* @hide
|
||||
* Caller will either have {@link android.Manifest.permission.MODIFY_PHONE_STATE}
|
||||
* permission or can manage all subscriptions in the list, according to their
|
||||
* acess rules.
|
||||
*
|
||||
* @param subIdList list of subId that will be in the same group
|
||||
* @return groupUUID a UUID assigned to the subscription group. It returns
|
||||
* null if fails.
|
||||
*
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
public int setParentSubId(int parentSubId, int subId) {
|
||||
if (VDBG) logd("[setParentSubId]+ parentSubId:" + parentSubId + " subId:" + subId);
|
||||
return setSubscriptionPropertyHelper(subId, "parentSubId",
|
||||
(iSub)-> iSub.setParentSubId(parentSubId, subId));
|
||||
public String setSubscriptionGroup(int[] subIdList) {
|
||||
String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
|
||||
if (VDBG) {
|
||||
logd("[setSubscriptionGroup]+ subIdList:" + Arrays.toString(subIdList));
|
||||
}
|
||||
|
||||
String groupUUID = null;
|
||||
try {
|
||||
ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
|
||||
if (iSub != null) {
|
||||
groupUUID = iSub.setSubscriptionGroup(subIdList, pkgForDebug);
|
||||
}
|
||||
} catch (RemoteException ex) {
|
||||
// ignore it
|
||||
}
|
||||
|
||||
return groupUUID;
|
||||
}
|
||||
|
||||
private interface CallISubMethodHelper {
|
||||
|
||||
@@ -165,13 +165,23 @@ interface ISub {
|
||||
int setOpportunistic(boolean opportunistic, int subId);
|
||||
|
||||
/**
|
||||
* Set parent subId by simInfo index
|
||||
* Inform SubscriptionManager that subscriptions in the list are bundled
|
||||
* as a group. Typically it's a primary subscription and an opportunistic
|
||||
* subscription. It should only affect multi-SIM scenarios where primary
|
||||
* and opportunistic subscriptions can be activated together.
|
||||
* Being in the same group means they might be activated or deactivated
|
||||
* together, some of them may be invisible to the users, etc.
|
||||
*
|
||||
* Caller will either have {@link android.Manifest.permission.MODIFY_PHONE_STATE}
|
||||
* permission or can manage all subscriptions in the list, according to their
|
||||
* acess rules.
|
||||
*
|
||||
* @param subIdList list of subId that will be in the same group
|
||||
* @return groupUUID a UUID assigned to the subscription group. It returns
|
||||
* null if fails.
|
||||
*
|
||||
* @param parentSubId: subId of its parent subscription.
|
||||
* @param subId the unique SubscriptionInfo index in database
|
||||
* @return the number of records updated
|
||||
*/
|
||||
int setParentSubId(int parentSubId, int subId);
|
||||
String setSubscriptionGroup(in int[] subIdList, String callingPackage);
|
||||
|
||||
/**
|
||||
* Set which subscription is preferred for cellular data. It's
|
||||
|
||||
Reference in New Issue
Block a user