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

Commit 77b5c5a3 authored by Hall Liu's avatar Hall Liu Committed by Gerrit Code Review
Browse files

Merge changes from topic "move-emergency-phone-update"

* changes:
  Update docs for onEmergencyNumberListChanged
  Call onOutgoingEmergencyCall only once.
  Expose onEmergencyNumberListChanged, semantics change
parents 2538a164 bed564c9
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -47801,6 +47801,7 @@ package android.telephony {
    method public void onDataConnectionStateChanged(int);
    method public void onDataConnectionStateChanged(int, int);
    method @RequiresPermission("android.permission.READ_PHONE_STATE") public void onDisplayInfoChanged(@NonNull android.telephony.TelephonyDisplayInfo);
    method public void onEmergencyNumberListChanged(@NonNull java.util.Map<java.lang.Integer,java.util.List<android.telephony.emergency.EmergencyNumber>>);
    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
    method public void onMessageWaitingIndicatorChanged(boolean);
    method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
+2 −1
Original line number Diff line number Diff line
@@ -10814,7 +10814,8 @@ package android.telephony {
  public class PhoneStateListener {
    method public void onCallAttributesChanged(@NonNull android.telephony.CallAttributes);
    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
    method @Deprecated public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber);
    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
    method public void onOutgoingEmergencySms(@NonNull android.telephony.emergency.EmergencyNumber);
    method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onPreciseCallStateChanged(@NonNull android.telephony.PreciseCallState);
    method public void onRadioPowerStateChanged(int);
+4 −0
Original line number Diff line number Diff line
@@ -1627,6 +1627,10 @@ package android.telephony {
    method public static void setMinMatchForTest(int);
  }

  public class PhoneStateListener {
    method public void onOutgoingEmergencyCall(@NonNull android.telephony.emergency.EmergencyNumber, int);
  }

  public final class PreciseDataConnectionState implements android.os.Parcelable {
    ctor @Deprecated public PreciseDataConnectionState(int, int, int, @NonNull String, @Nullable android.net.LinkProperties, int);
  }
+49 −13
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.Manifest;
import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.compat.annotation.ChangeId;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Binder;
@@ -923,19 +924,21 @@ public class PhoneStateListener {
    /**
     * Callback invoked when the current emergency number list has changed on the registered
     * subscription.
     * Note, the registration subId comes from {@link TelephonyManager} object which registers
     * PhoneStateListener by {@link TelephonyManager#listen(PhoneStateListener, int)}.
     *
     * Note, the registered subscription is associated with {@link TelephonyManager} object
     * on which {@link TelephonyManager#listen(PhoneStateListener, int)} was called.
     * If this TelephonyManager object was created with
     * {@link TelephonyManager#createForSubscriptionId(int)}, then the callback applies to the
     * subId. Otherwise, this callback applies to
     * given subId. Otherwise, this callback applies to
     * {@link SubscriptionManager#getDefaultSubscriptionId()}.
     *
     * @param emergencyNumberList Map including the key as the active subscription ID
     *                           (Note: if there is no active subscription, the key is
     *                           {@link SubscriptionManager#getDefaultSubscriptionId})
     *                           and the value as the list of {@link EmergencyNumber};
     *                           null if this information is not available.
     * @hide
     * @param emergencyNumberList Map associating all active subscriptions on the device with the
     *                            list of emergency numbers originating from that subscription.
     *                            If there are no active subscriptions, the map will contain a
     *                            single entry with
     *                            {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID} as
     *                            the key and a list of emergency numbers as the value. If no
     *                            emergency number information is available, the value will be null.
     */
    public void onEmergencyNumberListChanged(
            @NonNull Map<Integer, List<EmergencyNumber>> emergencyNumberList) {
@@ -945,15 +948,46 @@ public class PhoneStateListener {
    /**
     * Callback invoked when an outgoing call is placed to an emergency number.
     *
     * @param placedEmergencyNumber the emergency number {@link EmergencyNumber} the call is placed
     *                              to.
     * This method will be called when an emergency call is placed on any subscription (including
     * the no-SIM case), regardless of which subscription this listener was registered on.
     *
     * @param placedEmergencyNumber The {@link EmergencyNumber} the emergency call was placed to.
     *
     * @deprecated Use {@link #onOutgoingEmergencyCall(EmergencyNumber, int)}.
     * @hide
     */
    @SystemApi
    @Deprecated
    public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
        // default implementation empty
    }

    /**
     * Callback invoked when an outgoing call is placed to an emergency number.
     *
     * This method will be called when an emergency call is placed on any subscription (including
     * the no-SIM case), regardless of which subscription this listener was registered on.
     *
     * The default implementation of this method calls
     * {@link #onOutgoingEmergencyCall(EmergencyNumber)} for backwards compatibility purposes. Do
     * not call {@code super(...)} from within your implementation unless you want
     * {@link #onOutgoingEmergencyCall(EmergencyNumber)} to be called as well.
     *
     * @param placedEmergencyNumber The {@link EmergencyNumber} the emergency call was placed to.
     * @param subscriptionId The subscription ID used to place the emergency call. If the
     *                       emergency call was placed without a valid subscription (e.g. when there
     *                       are no SIM cards in the device), this will be equal to
     *                       {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}.
     * @hide
     */
    @SystemApi
    @TestApi
    public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber,
            int subscriptionId) {
        // Default implementation for backwards compatibility
        onOutgoingEmergencyCall(placedEmergencyNumber);
    }

    /**
     * Callback invoked when an outgoing SMS is placed to an emergency number.
     *
@@ -1331,13 +1365,15 @@ public class PhoneStateListener {
                            () -> psl.onEmergencyNumberListChanged(emergencyNumberList)));
        }

        public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber) {
        public void onOutgoingEmergencyCall(@NonNull EmergencyNumber placedEmergencyNumber,
                int subscriptionId) {
            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
            if (psl == null) return;

            Binder.withCleanCallingIdentity(
                    () -> mExecutor.execute(
                            () -> psl.onOutgoingEmergencyCall(placedEmergencyNumber)));
                            () -> psl.onOutgoingEmergencyCall(placedEmergencyNumber,
                                    subscriptionId)));
        }

        public void onOutgoingEmergencySms(@NonNull EmergencyNumber sentEmergencyNumber) {
+1 −1
Original line number Diff line number Diff line
@@ -61,7 +61,7 @@ oneway interface IPhoneStateListener {
    void onRadioPowerStateChanged(in int state);
    void onCallAttributesChanged(in CallAttributes callAttributes);
    void onEmergencyNumberListChanged(in Map emergencyNumberList);
    void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber);
    void onOutgoingEmergencyCall(in EmergencyNumber placedEmergencyNumber, int subscriptionId);
    void onOutgoingEmergencySms(in EmergencyNumber sentEmergencyNumber);
    void onCallDisconnectCauseChanged(in int disconnectCause, in int preciseDisconnectCause);
    void onImsCallDisconnectCauseChanged(in ImsReasonInfo imsReasonInfo);
Loading