Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29dfebb8 authored by Jack Yu's avatar Jack Yu
Browse files

Added sub id to SmsCbMessage

Added a new field subscription id to SMS
cell broadcast message.

This is the preliminary step of deprecating
CellBroadcastMessage class.

Bug: 144891074
Test: Manual

Merged-In: I23f61e77f6a9a16ce77f7892ba96fd7485c555a4
Change-Id: I23f61e77f6a9a16ce77f7892ba96fd7485c555a4
(cherry picked from commit 750b8b19)
parent 0e7782c8
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -6499,6 +6499,7 @@ package android.provider {
    field public static final String SERIAL_NUMBER = "serial_number";
    field public static final String SERVICE_CATEGORY = "service_category";
    field public static final String SLOT_INDEX = "slot_index";
    field public static final String SUB_ID = "sub_id";
  }
  public static final class Telephony.Sms.Intents {
@@ -8509,7 +8510,7 @@ package android.telephony {
  }
  public final class SmsCbMessage implements android.os.Parcelable {
    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int);
    ctor public SmsCbMessage(int, int, int, @NonNull android.telephony.SmsCbLocation, int, @Nullable String, @Nullable String, int, @Nullable android.telephony.SmsCbEtwsInfo, @Nullable android.telephony.SmsCbCmasInfo, int, @Nullable java.util.List<android.telephony.CbGeoUtils.Geometry>, long, int, int);
    method @NonNull public static android.telephony.SmsCbMessage createFromCursor(@NonNull android.database.Cursor);
    method public int describeContents();
    method @Nullable public android.telephony.SmsCbCmasInfo getCmasWarningInfo();
@@ -8526,6 +8527,7 @@ package android.telephony {
    method public int getSerialNumber();
    method public int getServiceCategory();
    method public int getSlotIndex();
    method public int getSubscriptionId();
    method public boolean isCmasMessage();
    method public boolean isEmergencyMessage();
    method public boolean isEtwsMessage();
+1 −0
Original line number Diff line number Diff line
@@ -2425,6 +2425,7 @@ package android.provider {
    field public static final String SERIAL_NUMBER = "serial_number";
    field public static final String SERVICE_CATEGORY = "service_category";
    field public static final String SLOT_INDEX = "slot_index";
    field public static final String SUB_ID = "sub_id";
  }

  public static final class Telephony.Sms.Intents {
+1 −2
Original line number Diff line number Diff line
@@ -4055,9 +4055,7 @@ public final class Telephony {

        /**
         * The subscription which received this cell broadcast message.
         * @deprecated use {@link #SLOT_INDEX} instead.
         * <P>Type: INTEGER</P>
         * @hide
         */
        public static final String SUB_ID = "sub_id";

@@ -4331,6 +4329,7 @@ public final class Telephony {
        public static final String[] QUERY_COLUMNS_FWK = {
                _ID,
                SLOT_INDEX,
                SUB_ID,
                GEOGRAPHICAL_SCOPE,
                PLMN,
                LAC,
+27 −11
Original line number Diff line number Diff line
@@ -205,7 +205,9 @@ public final class SmsCbMessage implements Parcelable {
    /** CMAS warning area coordinates. */
    private final List<Geometry> mGeometries;

    private int mSlotIndex = 0;
    private final int mSlotIndex;

    private final int mSubId;

    /**
     * Create a new SmsCbMessage with the specified data.
@@ -214,11 +216,11 @@ public final class SmsCbMessage implements Parcelable {
    public SmsCbMessage(int messageFormat, int geographicalScope, int serialNumber,
            @NonNull SmsCbLocation location, int serviceCategory, @Nullable String language,
            @Nullable String body, int priority, @Nullable SmsCbEtwsInfo etwsWarningInfo,
            @Nullable SmsCbCmasInfo cmasWarningInfo, int slotIndex) {
            @Nullable SmsCbCmasInfo cmasWarningInfo, int slotIndex, int subId) {

        this(messageFormat, geographicalScope, serialNumber, location, serviceCategory, language,
                body, priority, etwsWarningInfo, cmasWarningInfo, 0 /* maximumWaitingTime */,
                null /* geometries */, System.currentTimeMillis(), slotIndex);
                null /* geometries */, System.currentTimeMillis(), slotIndex, subId);
    }

    /**
@@ -226,10 +228,12 @@ public final class SmsCbMessage implements Parcelable {
     * coordinates information.
     */
    public SmsCbMessage(int messageFormat, int geographicalScope, int serialNumber,
            @NonNull SmsCbLocation location, int serviceCategory, @Nullable String language,
            @Nullable String body, int priority, @Nullable SmsCbEtwsInfo etwsWarningInfo,
                        @NonNull SmsCbLocation location, int serviceCategory,
                        @Nullable String language, @Nullable String body, int priority,
                        @Nullable SmsCbEtwsInfo etwsWarningInfo,
                        @Nullable SmsCbCmasInfo cmasWarningInfo, int maximumWaitTimeSec,
            @Nullable List<Geometry> geometries, long receivedTimeMillis, int slotIndex) {
                        @Nullable List<Geometry> geometries, long receivedTimeMillis, int slotIndex,
                        int subId) {
        mMessageFormat = messageFormat;
        mGeographicalScope = geographicalScope;
        mSerialNumber = serialNumber;
@@ -244,6 +248,7 @@ public final class SmsCbMessage implements Parcelable {
        mGeometries = geometries;
        mMaximumWaitTimeSec = maximumWaitTimeSec;
        mSlotIndex = slotIndex;
        mSubId = subId;
    }

    /**
@@ -282,6 +287,7 @@ public final class SmsCbMessage implements Parcelable {
        mGeometries = geoStr != null ? CbGeoUtils.parseGeometriesFromString(geoStr) : null;
        mMaximumWaitTimeSec = in.readInt();
        mSlotIndex = in.readInt();
        mSubId = in.readInt();
    }

    /**
@@ -317,6 +323,7 @@ public final class SmsCbMessage implements Parcelable {
                mGeometries != null ? CbGeoUtils.encodeGeometriesToString(mGeometries) : null);
        dest.writeInt(mMaximumWaitTimeSec);
        dest.writeInt(mSlotIndex);
        dest.writeInt(mSubId);
    }

    @NonNull
@@ -427,13 +434,21 @@ public final class SmsCbMessage implements Parcelable {
    }

    /**
     * Get the slotIndex associated with this message.
     * @return the slotIndex associated with this message
     * Get the slot index associated with this message.
     * @return the slot index associated with this message
     */
    public int getSlotIndex() {
        return mSlotIndex;
    }

    /**
     * Get the subscription id associated with this message.
     * @return the subscription id associated with this message
     */
    public int getSubscriptionId() {
        return mSubId;
    }

    /**
     * Get the message format ({@link #MESSAGE_FORMAT_3GPP} or {@link #MESSAGE_FORMAT_3GPP2}).
     * @return an integer representing 3GPP or 3GPP2 message format
@@ -536,6 +551,7 @@ public final class SmsCbMessage implements Parcelable {
    public ContentValues getContentValues() {
        ContentValues cv = new ContentValues(16);
        cv.put(CellBroadcasts.SLOT_INDEX, mSlotIndex);
        cv.put(CellBroadcasts.SUB_ID, mSubId);
        cv.put(CellBroadcasts.GEOGRAPHICAL_SCOPE, mGeographicalScope);
        if (mLocation.getPlmn() != null) {
            cv.put(CellBroadcasts.PLMN, mLocation.getPlmn());
@@ -577,7 +593,6 @@ public final class SmsCbMessage implements Parcelable {
        }

        cv.put(CellBroadcasts.MAXIMUM_WAIT_TIME, mMaximumWaitTimeSec);
        cv.put(CellBroadcasts.SLOT_INDEX, mSlotIndex);

        return cv;
    }
@@ -600,6 +615,7 @@ public final class SmsCbMessage implements Parcelable {
        int format = cursor.getInt(cursor.getColumnIndexOrThrow(CellBroadcasts.MESSAGE_FORMAT));
        int priority = cursor.getInt(cursor.getColumnIndexOrThrow(CellBroadcasts.MESSAGE_PRIORITY));
        int slotIndex = cursor.getInt(cursor.getColumnIndexOrThrow(CellBroadcasts.SLOT_INDEX));
        int subId = cursor.getInt(cursor.getColumnIndexOrThrow(CellBroadcasts.SUB_ID));

        String plmn;
        int plmnColumn = cursor.getColumnIndex(CellBroadcasts.PLMN);
@@ -697,7 +713,7 @@ public final class SmsCbMessage implements Parcelable {

        return new SmsCbMessage(format, geoScope, serialNum, location, category,
                language, body, priority, etwsInfo, cmasInfo, maximumWaitTimeSec, geometries,
                receivedTimeMillis, slotIndex);
                receivedTimeMillis, slotIndex, subId);
    }

    /**
+4 −3
Original line number Diff line number Diff line
@@ -878,9 +878,10 @@ public class SmsMessage extends SmsMessageBase {
     * Parses a broadcast SMS, possibly containing a CMAS alert.
     *
     * @param plmn the PLMN for a broadcast SMS
     * @param subId
     * @param slotIndex SIM slot index
     * @param subId Subscription id
     */
    public SmsCbMessage parseBroadcastSms(String plmn, int subId) {
    public SmsCbMessage parseBroadcastSms(String plmn, int slotIndex, int subId) {
        BearerData bData = BearerData.decode(mEnvelope.bearerData, mEnvelope.serviceCategory);
        if (bData == null) {
            Rlog.w(LOG_TAG, "BearerData.decode() returned null");
@@ -896,7 +897,7 @@ public class SmsMessage extends SmsMessageBase {
        return new SmsCbMessage(SmsCbMessage.MESSAGE_FORMAT_3GPP2,
                SmsCbMessage.GEOGRAPHICAL_SCOPE_PLMN_WIDE, bData.messageId, location,
                mEnvelope.serviceCategory, bData.getLanguage(), bData.userData.payloadStr,
                bData.priority, null, bData.cmasWarningInfo, subId);
                bData.priority, null, bData.cmasWarningInfo, slotIndex, subId);
    }

    /**
Loading