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

Commit f0e75a65 authored by Jordan Liu's avatar Jordan Liu Committed by Gerrit Code Review
Browse files

Merge "Add CDMA SCP message handling to CellBroadcast module"

parents eb6be3bd 30adc047
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7288,6 +7288,7 @@ package android.telephony {
    ctor public CellBroadcastService();
    method @CallSuper @NonNull public android.os.IBinder onBind(@Nullable android.content.Intent);
    method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
    method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
    method public abstract void onGsmCellBroadcastSms(int, @NonNull byte[]);
    field public static final String CELL_BROADCAST_SERVICE_INTERFACE = "android.telephony.CellBroadcastService";
  }
+52 −6
Original line number Diff line number Diff line
@@ -22,9 +22,14 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.Service;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteCallback;
import android.telephony.cdma.CdmaSmsCbProgramData;

import java.util.List;
import java.util.function.Consumer;

/**
 * A service which exposes the cell broadcast handling module to the system.
 * <p>
@@ -48,6 +53,7 @@ import android.telephony.cdma.CdmaSmsCbProgramData;
 *   </service>
 * </manifest>
 * }</pre>
 *
 * @hide
 */
@SystemApi
@@ -64,6 +70,7 @@ public abstract class CellBroadcastService extends Service {

    /**
     * Handle a GSM cell broadcast SMS message forwarded from the system.
     *
     * @param slotIndex the index of the slot which received the message
     * @param message   the SMS PDU
     */
@@ -71,6 +78,7 @@ public abstract class CellBroadcastService extends Service {

    /**
     * Handle a CDMA cell broadcast SMS message forwarded from the system.
     *
     * @param slotIndex       the index of the slot which received the message
     * @param bearerData      the CDMA SMS bearer data
     * @param serviceCategory the CDMA SCPT service category
@@ -78,6 +86,21 @@ public abstract class CellBroadcastService extends Service {
    public abstract void onCdmaCellBroadcastSms(int slotIndex, @NonNull byte[] bearerData,
            @CdmaSmsCbProgramData.Category int serviceCategory);

    /**
     * Handle a CDMA cell broadcast SMS message forwarded from the system.
     *
     * @param slotIndex          the index of the slot which received the message
     * @param smsCbProgramData   the SMS CB program data of the message
     * @param originatingAddress the originating address of the message, as a non-separated dial
     *                           string
     * @param callback           a callback to run after each cell broadcast receiver has handled
     *                           the SCP message. The bundle will contain a non-separated
     *                           dial string as and an ArrayList of {@link CdmaSmsCbProgramResults}.
     */
    public abstract void onCdmaScpMessage(int slotIndex,
            @NonNull List<CdmaSmsCbProgramData> smsCbProgramData,
            @NonNull String originatingAddress, @NonNull Consumer<Bundle> callback);

    /**
     * If overriding this method, call through to the super method for any unknown actions.
     * {@inheritDoc}
@@ -92,11 +115,13 @@ public abstract class CellBroadcastService extends Service {
    /**
     * A wrapper around ICellBroadcastService that forwards calls to implementations of
     * {@link CellBroadcastService}.
     *
     * @hide
     */
    public class ICellBroadcastServiceWrapper extends ICellBroadcastService.Stub {
        /**
         * Handle a GSM cell broadcast SMS.
         *
         * @param slotIndex the index of the slot which received the broadcast
         * @param message   the SMS message PDU
         */
@@ -107,6 +132,7 @@ public abstract class CellBroadcastService extends Service {

        /**
         * Handle a CDMA cell broadcast SMS.
         *
         * @param slotIndex       the index of the slot which received the broadcast
         * @param bearerData      the CDMA SMS bearer data
         * @param serviceCategory the CDMA SCPT service category
@@ -117,5 +143,25 @@ public abstract class CellBroadcastService extends Service {
            CellBroadcastService.this.onCdmaCellBroadcastSms(slotIndex, bearerData,
                    serviceCategory);
        }

        /**
         * Handle a CDMA Service Category Program message.
         *
         * @param slotIndex          the index of the slot which received the message
         * @param smsCbProgramData   the SMS CB program data of the message
         * @param originatingAddress the originating address of the message
         * @param callback           a callback to run after each cell broadcast receiver has
         *                           handled the SCP message
         */
        @Override
        public void handleCdmaScpMessage(int slotIndex,
                List<CdmaSmsCbProgramData> smsCbProgramData, String originatingAddress,
                RemoteCallback callback) {
            Consumer<Bundle> consumer = bundle -> {
                callback.sendResult(bundle);
            };
            CellBroadcastService.this.onCdmaScpMessage(slotIndex, smsCbProgramData,
                    originatingAddress, consumer);
        }
    }
}
+7 −0
Original line number Diff line number Diff line
@@ -16,6 +16,9 @@

package android.telephony;

import android.os.RemoteCallback;
import android.telephony.cdma.CdmaSmsCbProgramData;

/**
 * Service bound to by the system to allow custom handling of cell broadcast messages.
 * <p>
@@ -29,4 +32,8 @@ interface ICellBroadcastService {

    /** @see android.telephony.CellBroadcastService#onCdmaCellBroadcastSms */
    oneway void handleCdmaCellBroadcastSms(int slotId, in byte[] bearerData, int serviceCategory);

    /** @see android.telephony.CellBroadcastService#onCdmaScpMessage */
    oneway void handleCdmaScpMessage(int slotId, in List<CdmaSmsCbProgramData> programData,
            String originatingAddress, in RemoteCallback callback);
}
+21 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/** @hide */
package android.telephony.cdma;

parcelable CdmaSmsCbProgramData;